集合总结:
Collection
Boolean addAll(Collection<?> c):并
Boolean removeAll(Collection<?> c):差
Boolean retainAll(Collection<?> c):交
PriorityQueue未实现Cloneable接口,但实现了Serializable接口
其余的都实现了Cloneable和Serializable接口
线性表(list):[可以存储相同的元素][利用LinkedIterator双向遍历]
LinkedList(链表):利用链表存储元素, 在起始位置插入或者删除元素效率比较高。链表有get(i)方法,但是比较耗时,应该使用迭代器(foreach)。
ArrayList(顺序表):利用数组(动态创建)存储元素,通过下标随机访问元素效率高,但是频繁的插入或者删除元素(尤其是在线性表起始位置)效率低下。容量可以自动增大,但是不能自动减小,可以使用trimToSize()减小,线程不安全的(不同步的)。
Vector:线程安全的(同步的).
Stack(栈s)
集合(set):[处理和存储无重复元素][利用Iterator向后遍历]
HashSet(散列集):【插入时无序】初始容量为16,负载系数0.75,当集合内元素达到16*0.75=12时,集合的容量就会自动翻倍.添加到集合中的对象必须以一种正确分散的散列码的方式来实现hashCode方法。
LinkedHashSet(链式散列集):【按照插入时的顺序排列】
效率:HashSet>LinkedHashSet
TreeSet(树形集):可以确保集合中的元素是有序的,插入的对象必须是可比较的(实现Comparable或者Comparator接口)
无重复元素进行排序:集合比线性表更加高效.
查找:集合比线性表更加高效.
线性表可以通过索引访问元素get(i),而集合不支持索引,遍历集合用Iterator或者foreach。
映射表(map):[键值快速查询和获取值][键值对存储的容器]
Set<Map.Entry<K,V>>entrySet() //获取键值对集合
Set<K>keySet() //获取所有键的集合(不可重复)
Collection<V>values() //获取所有值的集合(可重复)
HashMap:定位,插入,删除一个元素,HashMap效率最高.但是没有顺序(不支持排序)
LinkedHashMap:相比HashMap而言,可以按照插入顺序排,也可以按照最后一次被访问时的顺序(早->晚)
TreeMap:键需要是可比较的.默认按键的升序排列.
HashTable:方法是同步的(线程安全的).
以后还会继续补充...(To be Continued...)