Java学习记录(补充五:面对对象集合)

面对对象集合
package day10;
public class Student { private String number; private String name; private int age; public Student(String number, String name, int age) { this.number = number; this.age = age; this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package day10;

import java.util.List;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

//collection接口:存储一组不唯一,无序的对象
//子接口: 1.List:存储一组不唯一,有序(插入顺序)的对象
//         2.Set:存储一组唯一,无序的对象
//Map接口:存储一组键值对象,提供key(值)到value(值)的映像
public class Demo01 {
    public static void main(String[] args) {
        //创建一个集合,长度可变的数组(默认长度为10)
        List<Object> list = new ArrayList<Object>();
        //1:使用集合对数据进行管理操作
        //1:存
        list.add("a");
        list.add("b");
        //2:取
        System.out.println(list.get(0));
        //3:获取集合的长度
        System.out.println(list.size());
        //4:删除
        list.remove(0);
        
        
        /****************练习*****************/
        //定义一个学生类:包含学号,姓名,年龄
        //定义一个List集合,用于保存学院信息
        //数据不少于5个
        
        
        
        
        System.out.println("***************************************");
        //泛型集合:指定机集合存储的数据类型
        //和数组类似
        
        //定义了Student类型的集合
        List<Student> students = new ArrayList<Student>();
        students.add(new Student("jredu1","zhangsan1",12));
        students.add(new Student("jredu2","zhangsan2",22));
        //遍历数组
        //方法1:for循环
        for (int i = 0; i < students.size(); i++) {
            Student s = (Student) students.get(i);
            System.out.println(s.getName()+s.getNumber()+s.getAge());
        }
        
        //方法2:for-each循环
        for(Student s:students){
            System.out.println(s.getNumber());
        }
        
        //方法3:使用迭代器
        Iterator<Student> it = students.iterator();
        while(it.hasNext()){
            Student s = it.next();
            System.out.println(s.getNumber());
        }
        
        
        /***********************************/
        LinkedList<Student> lnk = new LinkedList<Student>();
        //1:添加一个集合的数据进来
        lnk.addAll(students);
        for(Student s : lnk){
            System.out.println(s.getName());
        }
        //2:在头部添加一个学生
        lnk.addFirst(new Student("jredu", "dsdsd", 12));
        for(Student s : lnk){
            System.out.println(s.getName());
        }
    }
}
package day10;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class StudentTest {
    public static void main(String[] args) {
        
        List<Student> list = new ArrayList<Student>();
        Student []s = new Student[5];
        Scanner input = new Scanner(System.in);
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入学号");
            String num = input.next();
            System.out.println("请输入名字");
            String name = input.next();
            System.out.println("请输入年龄");
            int age = input.nextInt();
            s[i] = new Student(num,name,age); 
            list.add(s[i]);
        }
        for (int i = 0; i < 5; i++) {
            Student a =(Student)list.get(i);
            System.out.println(a.getNumber()+" "+a.getName()+" "+a.getAge());
            
        }
        input.close();
    }
}

结果图:

                                 

集合框架知识总结

数组

  1. 长度固定:不能添加多余元素

集合框架

  1. 接口(规范部分) 
    • collection:接口存储一组不唯一,无序的对象(不唯一,无序) 
      1. List:接口存储一组不唯一,有序(插入顺序)的对象
      2. set:接口存储一组唯一,无序的对象
    • Map:接口存储一组键值对象,提供key(键)到value(值)的映像
  2. 类(具体): 
    • List
  3. ArrayList:实现了长度可变的数组,在内存里分配连续的空间。遍历元素和随机访问元素的效率比较高。实例:List students = new ArrayList(); 
    students.add(new Student(“jredu001”, “zhang3”, 20)); 
    students.add(new Student(“jredu002”, “li4”, 25));

    for(int i=0;i<students.size();i++){
        Student s = students.get(i);
        System.out.println(s.getNo());
    }
    
  4. LinkList:采用链表存储方式。插入,删除元素时效率比较高。列子:/************************
    System.out.println(“****LinkedList*********”); 
    LinkedList lnk = new LinkedList(); 
    //1、添加一个集合的数据进来 
    lnk.addAll(students); 
    for(Student s : lnk){ 
    System.out.println(s.getName()); 

    System.out.println(“********************”); 
    //2、在头部添加一个学生 
    lnk.addFirst(new Student(“jredu003”, “wang5”, 24));

    for(Student s : lnk){
        System.out.println(s.getName());
    }
    
  5. 使用方法:

方法名说明
void addFirst(object o) 在列表的首部添加元素
void addLast(object o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一个元素
Object getLirst() 返回列表中的最后一个元素
Object removeFirst() 删除并返回列表中的第一个元素
Object removeLarst() 删除并返回列表中的最后一个数据

- set 
1. HashSet 
2. TreeSet 
- Map 
3. 算法:collection提供了对集合进行排序,遍历等多种算法实现 
4. 如何遍历 
- 方法1:通过for循环和get方法配合实现遍历 
- 方法2:通过迭代器Iterator实现遍历

原文地址:https://www.cnblogs.com/lizuowei/p/7441736.html