Collection类
Collection不属于Java框架继承树上的内容,它属于单独的分支,Collections是一个包装类,它的作用就是为集合框架提供某些功能实现,此类只包括静态方法操作或者返回collections。
1、同步包装
同步包装器将自动同步(线程安全性)添加到任意集合。六个核心接口(Collection、Set、List、Map、SortedSet、SortedMap)中的每一个都有一个静态工厂方法。
public static Collections synchronizedCollection(Collection c); public static Set synchronizedSet(Set s); public static List synchronizedList(List list); public static <k,v>Map<k,v> synchronizedMap(Map<k,v> m); public static SortedSet synchronizedSortedSet(SortedSet s); public static <k,v> SortedMap<k,v> synchronizedSortedMap(SortedMap<k,v> m);
2、不可修改的包装
不可修改的包装器通过拦截修改集合的操作并抛出UnsupportOperationException,主要用在下面两场景:
构建集合后使用其不可变。在这种情况下最好不要去获取返回collection的引用,这样有利于保证不可变性。
允许某些客户端以只读方式访问数据结构。保留对返回的collection的引用,但分发对包装器的引用。通过这种方式,客户可以查看但不能修改,同时保持安全访问权限。这些方法有:
public static Collections unmodifiableCollection(Collection c); public static Set unmodifiableSet(Set s); public static List unmodifiableList(List list); public static <k,v>Map<k,v> unmodifiableMap(Map<k,v> m); public static SortedSet unmodifiableSortedSet(SortedSet s); public static <k,v> SortedMap<k,v> unmodifiableSortedMap(SortedMap<k,v> m);
3、线程安全的Collections
Java1.5并发包(Java.Util.concurrent)提供了线程安全的collections允许遍历的时候进行修改,通过设计iterator为fail-fast并抛出ConcurrentModificationException。一些实现类是CopyOnWriteArrayList、ConcurrentHashMap、CopyOnWriteArraySet。
4、Collection 算法
此类包含用于集合框架算法的方法,例如二进制搜索、排序、重排、反向等。
5、集合实现类特征图
集合框架的主要实现类的特征图
集合 |
排序 |
随机访问 |
Key-value存储 |
重复元素 |
空元素 |
线程安全 |
ArrayList |
Y |
Y |
N |
Y |
Y |
N |
LinkedList |
Y |
N |
N |
Y |
Y |
N |
HashSet |
N |
N |
N |
N |
Y |
N |
Treeset |
Y |
N |
N |
N |
N |
N |
HashMap |
N |
Y |
Y |
N |
Y |
N |
TreeMap |
Y |
Y |
Y |
N |
N |
N |
Vector |
Y |
Y |
N |
Y |
Y |
Y |
Hashtable |
N |
Y |
Y |
N |
N |
Y |
ConcurrentHashMap |
N |
Y |
Y |
N |
N |
Y |
Stack |
Y |
N |
N |
Y |
Y |
Y |
CopyOnWriteArrayList |
Y |
Y |
N |
Y |
Y |
Y |