Java集合框架是一个设计精良、功能强大的工具集,用于存储和操作对象集合。它大致分为以下几类,并且各类之间存在一定的层级关系和功能差异:

顶级接口(根接口)

  1. Collection: 是最基础的集合接口,所有集合类都直接或间接实现了这个接口。它定义了基本的集合操作,如添加元素(add(E element))、删除元素(remove(Object o))、清空集合(clear())、检查集合是否为空(isEmpty())等。
  2. Map: 专门用于存储键值对的接口,其中每个键映射到一个值。它定义了如获取值(get(Object key)), 添加键值对(put(K key, V value)), 删除映射(remove(Object key))等操作。

Collection的子接口

  1. List: 有序集合,允许重复元素,可以通过索引访问元素。主要实现包括ArrayList, LinkedList, Vector
  2. Set: 无序集合,不允许重复元素。主要实现包括HashSet, LinkedHashSet, TreeSet

List和Set的区别

Map的子接口

  • SortedMap: 保持键的排序(自然排序或自定义比较器排序)的Map。主要实现包括TreeMap
  • NavigableMap: 扩展了SortedMap,提供了更强大的导航功能,如返回子图、逆向视图等。TreeMap也实现了这个接口。

特殊用途的集合接口

  • Queue: 表示一种先进先出(FIFO)的数据结构,主要实现包括LinkedList, PriorityQueue, ArrayBlockingQueue等。
  • Deque: 双端队列,可以在两端进行插入和删除操作,主要实现包括LinkedList, ArrayDeque

集合实现类

  • ArrayList: 动态数组实现的List,随机访问快,增删慢。
  • LinkedList: 双向链表实现的List和Queue,增删快,随机访问慢。
  • HashSet: 基于哈希表实现的Set,无序,性能依赖于哈希码。
  • LinkedHashSet: 维护插入顺序的HashSet。
  • TreeSet: 基于红黑树实现的Set,自然排序或自定义排序。
  • HashMap: 哈希表实现的Map,无序,高性能。
  • TreeMap: 红黑树实现的Map,键有序。
  • EnumSet/EnumMap: 专门用于枚举类型的Set和Map,高效且空间占用小。