Java集合体系

2,055 阅读2分钟

Java集合体系

img

img

  • Collection 接口:该接口是最基本的集合接口
  • List 接口:列表
  • Set 接口:数学概念的集合
  • Map 接口:包含键值对,Map 不能包含重复的键。SortedMap 是一个按升序排列的 Map 集合。

img

img

简化图:

说明:对于以上的框架图有如下几点说明

  1. 所有集合类都位于 java.util 包下。Java的集合类主要由两个接口派生而出:Collection 和 Map,Collection 和 Map 是 Java 集合框架的根接口,这两个接口又包含了一些子接口或实现类。
  2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。
  3. 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。
  4. 实现类:8个实现类(实线表示),对接口的具体实现。
  5. Collection 接口是一组允许重复的对象。
  6. Set 接口继承 Collection,集合元素不重复。
  7. List 接口继承 Collection,允许重复,维护元素插入顺序。
  8. Map接口是键-值对象,与Collection接口没有什么关系。
  9. 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 类,比较文档时使用引用相等。