集合与数组总结
引入集合
在之前,我们存储数据是使用数组来存储,后来渐渐发现,数组只能存储固定长度的数据,就是得在使用数组之前定义好长度,那么,这就会造成些时候,数据量少,剩余较多存储空间,而有些时候,数组不够用来存放数据.
那么能不能在每次加入一条数据的时候,长度就加1,删除一条数据时,长度就减1呢?可以.
这时候,JDK就提供了java集合,所有的java集合都归于java.util包中.
但是与数组存储的数据不同不同,集合只能用来存储对象.
java集合
族谱如下:
从上面这张图可以很直接的了解到这三大集合的特点
set集合:无序,不重复
list集合:有序,重复
map集合:key唯一,value可以重复
下面细讲:
list集合
list集合:有序,且重复
我们可以看到,list集合可以添加重复的元素
但是,看到这里有点疑惑了,不是说集合不能添加基本数据类型吗?为什么可以添加数据1,和String类型的"哈哈哈"等等...
在java中,基本数据类型有好几种:byte,short,char,int,long,float,double,那上面添加的这些元素不是基本数据类型吗?为什么不报错?
实际上,添加的不是基本数据类型,添加的这些数据都是Object的对象.
怎么说
左右类型一样,实际上,这些类默认的都是Object类,Object类是所有类的父类,这些类都在隐式继承Object类
所以,不管我们添加什么,最后都会自动转为Object类型的一个对象
那这时候就有一个问题,比如我想取1出来,想要1是int类型,我就定义一个int类型,再用get方法拿出来,这时候就会报错
怎么解决?需要强制转换数据类型就可拿到.
list与数组的区别
1.list长度可以变,数组长度固定
2.list存储的是对象,数组可以存基本数据类型和引用类型
3.数组一旦定义,只能存储同一种数据类型;list可以存多种数据类型
4.list按放入的顺序排序;数组按照下标排序
5.list里面的ArrayList.toArray()返回一个数组;Arrays.toList()返回一个集合
set集合和map集合后续会更,敬请期待