Java中的集合类

tim-qtp...大约 1 分钟Java基础集合

前者是存储对象的集合类,后者存储的是键值对(key-value)。

Collection 接口下又分为 List、Set 和 Queue 接口。每个接口有其具体实现类。以下是主要的集合类:

List 接口(是一个有序集合,允许重复元素):

  • ArrayList:基于动态数组,查询速度快,插入、删除慢。
  • LinkedList:基于双向链表,插入、删除快,查询速度慢。
  • Vector:线程安全的动态数组,类似于 ArrayList,但开销较大。

Set 接口(Set 是一个不包含重复元素的集合):

  • HashSet:基于哈希表,元素无序,不允许重复。
  • LinkedHashSet:基于链表和哈希表,维护插入顺序,不允许重复。
  • TreeSet:基于红黑树,元素有序,不允许重复。

所以网上有些说 Set 是无序集合非常不准确,因为需要看具体的实现类。

Queue 接口(Queue 是一个先进先出(FIFO)的集合):

  • PriorityQueue:基于优先级堆,元素按照自然顺序或指定比较器排序。
  • LinkedList:可以作为队列使用,支持 FIFO(先进先出)操作。

Map 接口(Map 是一个键值对的集合,键唯一,值可以重复):

存储的是键值对,也就是给对象(value)设置了一个 key,这样通过 key 可以找到那个 value。

  • HashMap:基于哈希表,键值对无序,不允许键重复。
  • LinkedHashMap:基于链表和哈希表,维护插入顺序,不允许键重复。
  • TreeMap:基于红黑树,键值对有序,不允许键重复。
  • Hashtable:线程安全的哈希表,不允许键或值为 null。
  • ConcurrentHashMap:线程安全的哈希表,适合高并发环境,不允许键或值为 null。