Java学习笔记114——集合继承体系

集合继承体系

案例

需求:利用数组存储3个学生信息,遍历数组获取每一个学生的信息

定义完整学生类

public class Student{
    private String name;
    private int age ;
​
    public Student() {
    }
​
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
​
    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;
    }
​
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

创建对象

public class ObjectArrayDemo1 {
    public static void main(String[] args) {
        Student[] arr = new Student[3];
​
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        System.out.println("---------------------------------");
​
        //创建3个学生对象
        Student xiaowang = new Student("王力宏", 40);
        Student dengdeng = new Student("邓超", 45);
        Student huazai = new Student("刘德华", 60);
​
        //将创建好的3个学生对象,放到数组中
//        for(int i=0;i<arr.length;i++){
//            arr[i] = s1;
//        }
​
        //给对象数组赋值,使用循环是有问题的,因为对象的名字没有规律,没办法
        //将每次循环依次赋值不一样的对象
        //所以给对象数组赋值,只能一个一个赋值
        arr[0] = xiaowang;
        arr[1] = dengdeng;
        arr[2] = huazai;
​
        //遍历数组获取每一个学生对象
        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
            Student student = arr[i];
            System.out.println(student.getName() + "--" + student.getAge());
        }
    }
}

 

对象数组内存

 

 

在上一个例子当中,假设在存储完所有的学生对象的后,来了一个新同学A,也想放到 对象数组中,直接放进去的话,长度已经是确定的,很明显没有空余的位置。 那怎么办呢?搞一个新的数组,长度是原来数组长度+1,然后再挨个存放。 这时候,有一个学生B,提前毕业,数组中的元素就少了一个,但是呢,现在数组中就有一个空的位置。 而这个空的位置依旧是占用内存的,也不太好,所以你又创建一个新的数组,长度-1,然后挨个存放。

上面的例子,无论是从增加还是删除,都非常麻烦,其实原则上我们修改是根据原先的东西基础上进行修改的。 想一想,如果有一个东西,可以根据存放的内容多少,自由改变长度就好了。 这时候我们想到之前还学过一个容器,叫做StringBuffer,它就可以根据元素的多少来改变长度。 但是,StringBuffer里面存储始终是一个一个的字符,而我们现在需要存放学生对象 所以用StringBuffer也不太合适。

我们就想不到之前还学过哪些容器可以根据元素的多少改变长度。 Java替我们考虑到了这一点,根据存储的元素不同,元素的特点不同以及存储方式不同, 提供了一个集合继承体系给我们,简单来说,就是本章的内容:集合

集合和数组的不同点:

1、数组的长度是不可变的,集合是可以改变 2、数组可以存放同一种基本数据类型或者引用数据类型 而集合只能存放引用数据类型,并且集合中可以存放不同的引用数据类型 (我们虽然说了集合可以存放不同的引用数据类型,确实也可以这么做,但是,开发中 一个集合存放一种数据类型。)

集合可以存放各种各样的数据,每种数据的长度,大小以及自身的特点都不一样。 所以,java提供的集合也应该不能够是单一的,我们要针对不同的需求,java提供不同的集合类。 这么多不同的集合,它们的底层数据结构也是不同的,不同并不重要,我们只要知道集合是可以用来 存放东西的,不光可以存放,而且可以去使用这些东西,比如:查找、获取、判断等等。

既然可以上面的操作,这些不同的集合类应该有某种共性的内容,所以我们根据集合的共性内容不断地 向上提取,最终整体形成一个继承体系。

posted @ 2021-12-18 19:59  欧朋  阅读(114)  评论(0)    收藏  举报