1、什么是集合
说到集合很容易想到数学概念上的集合,与之还是有些差别的,相同的是他们都是容器。在程序开发过程当中我们经常会需要一组数据(或类型相同的对象),那么如何承载这些对象呢?首先想到的是数组,可是数组是定长的而我们的对象数量是不确定的,这就需要不固定可扩容的容器来承载这些对象,集合应运而生了。
2、集合的特点:
(1)集合只能存放对象,基本数据类型如:int,long 或默认转换成封装类型 Integer,Long
(2) 集合实际上存储的不是对象本身,而是对象的引用,对象依然存放在堆里面
(3)集合可以存放不同类型,不限数量的数据类型
3、集合与数组的区别与联系
区别
数组本质上是一块连续的内存空间,一旦创建大小固定
数组只能存放相同类型的数据,但是Object[]数组可以存储不同类型的元素
数组.length 并不表示数组的中元素的个数,紧紧表示数组的长度,可以容纳多少个元素
集合是可以变长的,可以容纳不同类型的数据
联系
ArrayList,Vector集合底层的实现通过数组来实现的,集合默认会初始化一个定长数组,当集合的容量将要超过数组的负载时会按照一定比例扩充数组,本质上时创建一个新的大数组,将小数组的元素拷贝到大数组中去,这样反复重复。由此我们可以想象到如果数据量过大的话会不断的重复创建数组和copy数据,这样是很消耗性能,所以在创建之前如果已知数据的大小最好直接设置好集合的长度,这也是一个小小的优化。
4、集合的分类