集合(1):集合的概述

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了集合(1):集合的概述脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

集合(1):集合的概述

先从一个案例说起:利用数组存储3个学生信息,遍历数组获取每一个学生的信息

第1步:需要先创建一个学生类

类中包含:私有成员变量、构造方法、公共的set()和get()方法、重写toString()方法

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 +
                '}';
    }
}

第2步:在测试类中进行操作

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 xiaoli = new Student("李玉伟", 18);
        Student dengdeng = new Student("郭富城", 58);
        Student huazai = new Student("刘德华", 60);

        //将创建好的3个学生对象,放到数组中(将对象信息赋值给数组中的元素)
        /*
            不能使用循环,因为对象的名字没有规律,没办法
            将每次循环依次赋值不一样的对象
            所以给对象数组赋值,只能一个一个赋值
         */
        arr[0] = xiaoli;
        arr[1] = dengdeng;
        arr[2] = huazai;

        //遍历数组获取每一个学生对象
        for (int i = 0; i < arr.length; i++) {
            //因为学生类中重写了toString()方法,所以可以直接打印
            //如果未重写toString()方法,打印的将会是地址值
            System.out.println(arr[i]);
            /*
            或者接收数组,调用getXxx()来获取
            	Student s = arr[i];
		System.out.println(s.getName() + "--" + s.getAge());
		输出结果:
                李玉伟--18
                郭富城--58
                刘德华--60
            */
        }
    }
}
        执行结果如下:
                Student{name='李玉伟', age=18}
                Student{name='郭富城', age=58}
                Student{name='刘德华', age=60}

                Process finished with exit code 0

自习总结:

(1)未重写了toString()方法,未赋值,打印的将会是地址值
(2)未重写了toString()方法,赋值了,打印的将会是包+地址值(com.shujia.lyw.day22.Student@1540e19d)
(3)若重写了toString()方法,未赋值,打印的将会是null
(4)若重写了toString()方法,赋值了,①直接输出,可以不用接收
	                         ②也可以接收一下,用getXxx()获得并输出

对象数组内存图

集合(1):集合的概述

一、集合的概述

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

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

Java提供了一个集合继承体系给我们

为什么出现集合类?
	面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类
集合和数组的不同点:
(1)数组的长度是不可变的,集合是可以改变
(2)数组可以存放同一种基本数据类型或者引用数据类型;
	而集合只能存放引用数据类型,并且集合中可以存放不同的引用数据类型
	(我们虽然说了集合可以存放不同的引用数据类型,但是在开发中一个集合存放一种数据类型)
集合可以存放各种各样的数据,每种数据的长度,大小以及自身的特点都不一样。
所以,java提供的集合也应该不能够是单一的,我们要针对不同的需求,java提供不同的集合类。
这么多不同的集合,它们的底层数据结构也是不同的,不同并不重要,我们只要知道集合是可以用来
存放东西的,不光可以存放,而且可以去使用这些东西,比如:查找获取,判断等等
既然可以上面的操作,这些不同的集合类应该有某种共性的内容,所以我们根据集合的共性内容不断地
向上提取,最终整体形成一个继承体系

集合(1):集合的概述

集合(1):集合的概述

脚本宝典总结

以上是脚本宝典为你收集整理的集合(1):集合的概述全部内容,希望文章能够帮你解决集合(1):集合的概述所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: