一、为什么要使用集合
数组的优缺点
优点
1)通过下标访问元素的效率很高,指定下标为n的元素的地址:首地址*元素类型字节数
2)数组可以保存若干个元素的值。
缺点
1)数组长度定义后不能改变
2)数组进行元素的删除和插入操作的时候,效率比较低。需要移动大量的元素,例如a[10000],删除a[0],后面9999个元素都要向前移动一位
3)数组类型定义后只能存放该类型的数据
4)数组通过内容查找元素的效率比较低的
5)数组实际元素的数量无法获取,比如定义一个数组为a[10000],往里面添加数据后,无法获取数组被使用到了a[500],还是a[1000]?
6)数组的元素是连续分配的,所以在heap内存中必须找到连续的内存空间才能容纳数组的所有数据。对内存要求高
7)数组没有提供任何的封装,所有对元素的操作,都必须要通过自定义的方法实现
8)数组是无序的,可重复的,要存放有序的,不可重复的数据不能满足要求
由于数组存在如上缺点,所以引入了集合
二、集合的分类
三、集合的特点
1.集合只能存放引用数据类型的数据,对于基本数据类型会直接自动装箱为包装类 int--->Integer
集合选取原则
1.判断集合是否是键值对形式: 若是则考虑选择Map,在考虑键是否需要排序,若不需要排序则选择HashMap,若需要排序则选择TreeMap。
2.集合若不是键值对形式,判断集合存储的元素是否需要唯一,若需要则选择Set,在此基础上若元素需要排序,则选择TreeSet,反之则选择HashSet;若判断集合存储的元素不需要唯一,则选择List,在此基础上若选择线程安全,则选择Vector,若不考虑线程安全但为了效率高则选择ArrayList或者LinkedList,在此基础上,若查询多就选择ArrayList,若增删多就选择LinkedList。