集合容器学习

java中包含了丰富的集合框架。在以前的学习中陆陆续续接触了不少的内容,但没有系统的学习。从这里开始重温容器及对源码进行剖析。

容器是java很重要的一个部分。我们平时使用的容器主要来自于java.util这个包中。java容器由两部分组成:Collection和Map。总体的框架图是这样的:

Collection是Set、List和Queue抽象出来的接口,代表着“单个数据”组成的一个集合。Collection接口中包含的方法在set和list均有实现。

Set接口是一个不包括重复元素(包括可变对象)的Collection,是一种无序的 集合 。Set不包含满足 a.equals(b) 的元素对a和b,并且最多有一个null。实现Set的接口有:EnumSet、HashSet、TreeSet等。
List接口表示一个列表(数组、队列、链表、栈等)的一个Collection,内部的元素可以重复。实现List的有:ArrayList、LinkedList、Vector、Stack等。
Queue是一种队列(双端队列),支持在头、尾两端插入和移除元素,主要包括:ArrayDeque、LinkedBlockingDeque、LinkedList。另一种是阻塞式队列,队列满了以后再插入元素则会抛出异常,主要包括ArrayBlockQueue、PriorityBlockingQueue、LinkedBlockingQueue。虽然接口并未定义阻塞方法,但是实现类扩展了此接口。

Map是一个键值对的集合。也就是说,一个映射不能包含重复的键,每个键最多映射到一个值。该接口取代了Dictionary抽象类。实现map的有:HashMap、TreeMap、HashTable、Properties、EnumMap。

此外,关于Java集合的小抄把知识点提取出来,相当靠谱。

参考:
Java集合框架
Java 容器 & 泛型认识容器