Java集合体系
Java集合体系
- Collection 接口:该接口是最基本的集合接口
- List 接口:列表
- Set 接口:数学概念的集合
- Map 接口:包含键值对,Map 不能包含重复的键。SortedMap 是一个按升序排列的 Map 集合。
简化图:
说明:对于以上的框架图有如下几点说明
- 所有集合类都位于 java.util 包下。Java的集合类主要由两个接口派生而出:Collection 和 Map,Collection 和 Map 是 Java 集合框架的根接口,这两个接口又包含了一些子接口或实现类。
- 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。
- 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。
- 实现类:8个实现类(实线表示),对接口的具体实现。
- Collection 接口是一组允许重复的对象。
- Set 接口继承 Collection,集合元素不重复。
- List 接口继承 Collection,允许重复,维护元素插入顺序。
- Map接口是键-值对象,与Collection接口没有什么关系。
- Set、List 和 Map 可以看做集合的三大类:
List 集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。
Set 集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是集合里元素不允许重复的原因)。
Map 集合中保存 Key-value 对形式的元素,访问时只能根据每项元素的 key 来访问其 value。
标准集合类汇总于下表:
类 | 类描述 |
---|---|
AbstractCollection | 实现了大部分的集合接口。 |
AbstractList | 继承于 AbstractCollection 并且实现了大部分List接口。 |
AbstractSequentialList | 继承于 AbstractList ,提供了对数据元素的链式访问而不是随机访问。 |
LinkedList | 继承于 AbstractSequentialList,实现了一个链表。 |
ArrayList | 通过继承 AbstractList,实现动态数组。 |
AbstractSet | 继承于 AbstractCollection 并且实现了大部分Set接口。 |
HashSet | 继承了 AbstractSet,并且使用一个哈希表。 |
LinkedHashSet | 具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。 |
TreeSet | 继承于AbstractSet,使用元素的自然顺序对元素进行排序. |
AbstractMap | 实现了大部分的 Map 接口。 |
HashMap | 继承了 HashMap,并且使用一个哈希表。 |
TreeMap | 继承了 AbstractMap,并且使用一颗树。 |
WeakHashMap | 继承 AbstractMap类,使用弱**的哈希表。 |
LinkedHashMap | 继承于 HashMap,使用元素的自然顺序对元素进行排序. |
IdentityHashMap | 继承 AbstractMap 类,比较文档时使用引用相等。 |