Java 面试题
目录

Java 中常用的集合类有哪些?

· 约 3 分钟读完 · 第 14 / 274 章

推荐答案

Java 中常用的集合类主要分为以下几类:

  1. List 接口的实现类:

    • ArrayList:基于动态数组实现,支持快速随机访问。
    • LinkedList:基于双向链表实现,适合频繁的插入和删除操作。
    • Vector:线程安全的动态数组,性能较低。
    • Stack:继承自 Vector,实现栈结构。
  2. Set 接口的实现类:

    • HashSet:基于哈希表实现,元素无序且不允许重复。
    • LinkedHashSet:继承自 HashSet,维护插入顺序。
    • TreeSet:基于红黑树实现,元素有序。
  3. Map 接口的实现类:

    • HashMap:基于哈希表实现,键值对无序。
    • LinkedHashMap:继承自 HashMap,维护插入顺序或访问顺序。
    • TreeMap:基于红黑树实现,键值对有序。
    • Hashtable:线程安全的哈希表,性能较低。
    • ConcurrentHashMap:线程安全的哈希表,性能优于 Hashtable。
  4. Queue 接口的实现类:

    • LinkedList:可以用作队列或双端队列。
    • PriorityQueue:基于堆实现,元素按优先级排序。
    • ArrayDeque:基于数组实现的双端队列。

本题详细解读

List 接口的实现类

  • ArrayList:底层使用动态数组,支持快速随机访问,适合频繁查询的场景。但在中间插入或删除元素时性能较差,因为需要移动后续元素。
  • LinkedList:底层使用双向链表,适合频繁插入和删除的场景,尤其是在列表的头部或尾部操作时。但随机访问性能较差,因为需要遍历链表。
  • Vector:与 ArrayList 类似,但所有方法都是同步的,因此线程安全,但性能较低。
  • Stack:继承自 Vector,实现了栈的 LIFO(后进先出)结构。

Set 接口的实现类

  • HashSet:基于哈希表实现,元素无序且不允许重复。插入、删除和查找操作的时间复杂度为 O(1)。
  • LinkedHashSet:在 HashSet 的基础上维护了元素的插入顺序,适合需要保持插入顺序的场景。
  • TreeSet:基于红黑树实现,元素有序,支持自然排序或自定义排序。插入、删除和查找操作的时间复杂度为 O(log n)。

Map 接口的实现类

  • HashMap:基于哈希表实现,键值对无序。插入、删除和查找操作的时间复杂度为 O(1)。
  • LinkedHashMap:在 HashMap 的基础上维护了插入顺序或访问顺序,适合需要保持顺序的场景。
  • TreeMap:基于红黑树实现,键值对有序,支持自然排序或自定义排序。插入、删除和查找操作的时间复杂度为 O(log n)。
  • Hashtable:与 HashMap 类似,但所有方法都是同步的,因此线程安全,但性能较低。
  • ConcurrentHashMap:线程安全的哈希表,采用分段锁机制,性能优于 Hashtable。

Queue 接口的实现类

  • LinkedList:可以用作队列或双端队列,支持 FIFO(先进先出)和 LIFO(后进先出)操作。
  • PriorityQueue:基于堆实现,元素按优先级排序,适合需要优先处理的场景。
  • ArrayDeque:基于数组实现的双端队列,性能优于 LinkedList,适合用作栈或队列。