Collection 集合框
1:Collection 接口 主要包括 List 接口与Set 接口 这两个接口是我们比较常用的,用来对单个对象进行操作的
1.List接口,适合遍历与排序,不适合插入与删除操作。 是有序的,允许有重复元素,允许有null值。它主要的实现类有
(1) ArrayList: 此数据结构是基于动态数组来实现的。默认初始数组大小为10,动态扩充的算法是:原来数组
大小+原来数组/2;线程不安全,JDK1.2出现的。
(2) Vector : 此数据结构是基于动态数组来实现的。默认初始数组大小为10,动态扩充算法是:原来数组大
小+增量,如果增量为0,扩充算法为:原来数组大小*2线程安全,JDK1.0的时候就有了。
(3) LinkedList:没有默认容量, 此数据结构是基于链表来实现的。相对于前面两个来说更加适合添加和删除,
不适合查找和遍历。线程不安全。
2. Set接口,适合插入与删除操作,不适合遍历。是无序的,不允许有重复值,只允许有一个null值。
(1) HashSet: 此数据结构是基于动态数组和链表来实现的。默认初始动态数组大小为16,动态扩充算法是:当
存储空间的大小达到加载因子的比例的,原来数组大小*2。线程不安全,适合大数据的存储。通过hashCode()
方法来存储对象的位置。 通过重写equlse()与hashCode()来保证添加的对象是否重复。
(2) LinkedHashSet:是HashSet 的子类,使用链表来维护添加顺序的一个哈希表实现,来解决排序问题。
(3)TreeSet:此数据结构是基于二叉树来实现的。是有序的,排序是基于Comparable接口来实现的。线程不安全,
不允许有null值。
2:Map接口 主要包括HashMap,Hashtable,TreeMap,LinkedHashMap。此接口用于对两个对象一起进行操作,一个是key ,
一个是value。
(1)HashMap:基于哈希表来实现的,默认容量为16,动态扩充算法是:当存储空间的大小达到加载因子的比例的,
原来数组大小*2。 线程不安全。无序的,允许有null的键和值,JDK1.2引进。其父类是AbstracMap。
(2) Hashtable:基于哈希表来实现的,默认容量为11,动态扩充算法是:当存储空间的大小达到加载因子的比例的,
原来数组大小*2+1。线程安全。无序的,允许不允许有null的键和值,JDK1.0引进。其父类是
Dictionary。
(3)TreeMap:基于二叉树的红黑平衡树实现的,线程不安全,可以实现自然顺序排序,当key为自定义对象时,该对
象必须实现Comparable接口来比较对象的排序,并且用于检测重复值。