Collection下集合
List
是一个
有序集合,维持的顺序是元素插入的顺序,
允许元素重复
1.ArrayList:
数组,查找元素很快,但删除元素和添加元素的效率相对较差,
默认大小是
10
个元素
2.LinkedList:
双向链表,删除、添加元素的效率很高,但查找元素的的效率较差
3.Vector:
线程安全的按顺序存放的数组,大部分public方法都由synchronized修饰
Set
不与许重复元素
1.
HashSet:
实现是HashMap,按照key的哈希值存储,无序
2.
TreeSet:
值有序,按照元素值大小排序,实现是NavigableMap(SortedMap子类/TreeMap)
3.
SortedSet接口 :
有序,自己实现
comparator方法来排序
4.
LinkedHashSet:
维持的顺序是元素插入的顺序
不属于collection,但与set超有关系的... ...
Map
1.
HashMap : 元素无序,允许一个null key,
默认大小是
16
个元素
2.
TreeMap :
使用红黑树实现
3.
SortedMap接口 : 需自己实现
comparator方法实现排序
4.
LinkedHashMap :
维持的顺序是元素插入的顺序
/**
* The iteration ordering method for this linked hash map: <tt>true</tt>
* for access-order, <tt>false</tt> for insertion-order.
*/
// 如果为true,则按照访问顺序;如果为false(default),则按照插入顺序。
private final boolean accessOrder;
/**
* 双向链表的表头元素。
*/
private transient Entry<K,V> header;
/**
* LinkedHashMap的Entry元素。
*/
// 继承HashMap的Entry元素,又保存了其上一个元素before和下一个元素after的引用
private static class Entry<K,V> extends HashMap.Entry<K,V> {
Entry<K,V> before, after;
……
}
5.
Hashtable :
是同步的,比较慢,
几乎所有的
public
的方法都是
synchronized
的,而有些方法也是在内部通过
synchronized
代码块来实现
,
不允许有个空的
key