Java集合体系

Java集合体系

Java集合体系

Java集合体系

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

Java集合体系

Java集合体系

简化图:

Java集合体系

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

  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 类,比较文档时使用引用相等。