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

news/2025/2/10 7:43:58/

在 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:用于存储枚举类型键值对的集合类,内部使用数组实现,键只能是枚举类型,具有高效的存储和操作性能。
    • 这些集合类和接口提供了不同的功能和性能特点,您可以根据具体的需求选择适当的集合类来使用。


http://www.ppmy.cn/news/73114.html

相关文章

[Hadoop]大数据导论与Linux基础

目录 大数据导论 企业数据分析方向 数据分析基本步骤 大数据时代 分布式与集群 Linux操作系统概述 操作系统概念与分类 Linux起源与发展 Linux内核与发行版本 VMware Workstation虚拟机使用 VMware虚拟机概念 VMware虚拟机常规使用 Linux常用基础命令 Linux文件系…

2.数据结构期末复习之顺序表和链表

1.表是可以是线性结构 学号姓名19(数据项)jams(数据项)20(数据项)ming(数据项) 19 jams或 20 ming是数据元表单个的是数据项‘’线性结构可以表示为 19 jams->20 ming2.什么是逻辑结构?:具有相同类型的有限序列(元素排序的位置,排兵布阵操作的方法) a1 a2 a3 .... an (空…

魔改车钥匙实现远程控车:(前传)在macOS上安装使用Arduino

前言 因为最近有个需求需要硬件支持,原本打算使用 Arduino Nano,后来在 Boot 大佬的建议下,买了某宇宙家的 ESP32C3 核心板,对比 Arduino Nano 价格便宜了一大半,而且自身就集成了 WIFI 和 BLE 模块,还不用…

ubi 文件系统的fastmap启用

fastmap是一项实验性和可选的UBI功能,可以启用 通过将CONFIG_MTD_UBI_FASTMAP设置为“y”。启用后,UBI将评估模块 参数“fm_autoconvert”。如果设置为 1(默认值为 0),则自动 UBI 为任何附加的图像启用fatmap。这意味着…

Mybatis Plus实现乐观锁

文章目录 1 概念2 实现思路3 实现步骤步骤1:数据库表添加列步骤2:在模型类中添加对应的属性步骤3:添加乐观锁的拦截器步骤4:执行更新操作 1 概念 在讲解乐观锁之前,我们还是先来分析下问题: 业务并发现象带来的问题 : 秒杀 假如有100个商品或者票在出售&#xff…

腾讯出行服务,让你见证城市出行跃迁

代驾行业市场有多大?随着疫情防控进入新常态,代驾行业也随之回暖,代驾需求呈现“V”型反弹,单月总订单量已经超过疫前水平,并有望创历史新高。 为什么这样说呢?下面就跟指针跃动来聊聊,腾讯出行服务&#…

plan路径优化,路径平滑

plan路径优化,路径平滑 //欧氏距离double global_planner::euclidean_distance(const geometry_msgs::Point& p1, const geometry_msgs::Point& p2) {double dx = p1.x - p2.x;double dy = p1.y - p2.y;return std::sqrt(dx * dx + dy * dy);} //插入中间点void glob…

如何在海量、庞杂、混合的数据中发现价值?

数字时代,数据上升为国家战略,数据成为重要的生产要素和资产,得到了越来越多企业的重视,也成为企业数字化转型的重要抓手。据IDC中国预测,2025年中国大数据生产量有望增长至48.6ZB。 随着越来越大的数据量&#xff0c…