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

在 Java 中,有许多常用的集合类可供使用。以下是一些常见的集合类:

  1. ArrayList:基于数组实现的动态数组,提供了动态添加、删除和访问元素的功能。
  2. LinkedList:基于链表实现的双向链表,提供了在任意位置插入、删除和访问元素的功能。
  3. HashSet:基于哈希表实现的无序集合,不允许重复元素,并且不保证元素的顺序。
  4. TreeSet:基于红黑树实现的有序集合,按照元素的自然顺序或者指定的比较器进行排序。
  5. HashMap:基于哈希表实现的无序键值对集合,通过键来存储和访问值,不允许重复的键。
  6. TreeMap:基于红黑树实现的有序键值对集合,按照键的自然顺序或者指定的比较器进行排序。
  7. LinkedHashMap:基于哈希表和双向链表实现的有序键值对集合,保持插入顺序或者访问顺序。
  8. PriorityQueue:基于堆实现的优先队列,可以按照自然顺序或者指定的比较器对元素进行排序。
  9. HashSet、TreeSet、HashMap、TreeMap、LinkedHashSet 和 LinkedHashMap 类都实现了对应的接口 Set、SortedSet、Map、SortedMap、Set 和 Map。

除了上述的集合类,还有一些其他的集合类和接口可供使用,如 LinkedHashSet、LinkedHashMap、EnumSet、EnumMap 等,它们都有各自特定的用途和适用场景。

  1. ArrayList(数组列表):

    • 基于数组实现的动态数组,可以自动调整大小。
    • 可以通过索引访问元素,支持快速随机访问。
    • 添加和删除元素时,需要移动其他元素来维护顺序。
  2. LinkedList(链表):

    • 基于链表实现的双向链表,每个节点都包含对前一个和后一个节点的引用。
    • 可以在任意位置插入和删除元素,插入和删除操作比ArrayList更高效。
    • 不支持快速随机访问,需要遍历链表来访问元素。
  3. HashSet(哈希集合):

    • 基于哈希表实现的无序集合,使用哈希函数对元素进行散列存储。
    • 不允许重复元素,如果尝试添加重复元素,将被忽略。
    • 不保证元素的顺序,因为元素在哈希表中的位置是根据哈希码确定的。
  4. TreeSet(树集合):

    • 基于红黑树实现的有序集合,可以自动按照元素的自然顺序或者指定的比较器进行排序。
    • 不允许重复元素,如果尝试添加重复元素,将被忽略。
    • 支持高效地按照顺序访问元素,还提供了一些按范围检索元素的方法。
  5. HashMap(哈希映射):

    • 基于哈希表实现的无序键值对集合,通过键来存储和访问值。
    • 不允许重复的键,如果尝试添加重复键,新值将替换旧值。
    • 键和值可以为null。
    • 不保证键值对的顺序,因为键的位置是根据哈希码确定的。
  6. TreeMap(树映射):

    • 基于红黑树实现的有序键值对集合,可以自动按照键的自然顺序或者指定的比较器进行排序。
    • 不允许重复的键,如果尝试添加重复键,新值将替换旧值。
    • 键和值可以为null。
    • 提供了按范围检索键值对的方法。
  7. LinkedHashMap(链式哈希映射):

    • 基于哈希表和双向链表实现的有序键值对集合,可以保持插入顺序或者访问顺序。
    • 对于迭代操作,维护了键值对的顺序,性能略低于

      前面提到的 HashSet 和 HashMap。

    • 保持插入顺序的访问顺序的 LinkedHashMap 提供了更高效的迭代操作。
    • 如果只需要按插入顺序访问元素,可以使用 LinkedHashSet 和 LinkedHashMap。
    • PriorityQueue(优先队列):
      • 基于堆实现的优先队列,元素按照优先级进行排序。
      • 插入元素和获取最高优先级元素的操作具有较高的效率。
      • 元素的优先级可以通过自然顺序或者自定义比较器来定义。
    • 除了上述的集合类,还有一些其他的集合类和接口可供使用:

    • LinkedHashSet:基于哈希表和双向链表实现的有序集合,保持插入顺序。
    • LinkedHashMap:基于哈希表和双向链表实现的有序键值对集合,可以保持插入顺序或者访问顺序。
    • EnumSet:用于存储枚举类型元素的集合类,内部使用位向量实现,具有高效的存储和操作性能。
    • EnumMap:用于存储枚举类型键值对的集合类,内部使用数组实现,键只能是枚举类型,具有高效的存储和操作性能。
    • 这些集合类和接口提供了不同的功能和性能特点,您可以根据具体的需求选择适当的集合类来使用。

猜你喜欢

转载自blog.csdn.net/weixin_44798281/article/details/130742095