当前位置: 首页 > news >正文

java 中的集合对象

------------------------------------------------------------------------------------------------------

Java 中的集合框架(java.util 包下)包含众多用于存储和操作对象的容器类,主要分为 Collection 和 Map 两大体系,此外还有一些特殊用途的集合类。以下是常见集合对象的分类及核心特点:

一、Collection 接口(存储单值元素,继承自 Iterable)

1. List(有序、可重复、允许 null)

  • ArrayList
    • 底层基于动态数组实现,查询快(随机访问)、增删慢(需移动元素)。
    • 初始容量 10,扩容机制为 oldCapacity + (oldCapacity >> 1)(1.5 倍)。
    • 线程不安全,适合单线程场景。
  • LinkedList
    • 底层基于双向链表实现,增删快(只需修改指针)、查询慢(需遍历)。
    • 同时实现了 Deque 接口,可作为队列 / 栈使用。
    • 线程不安全。
  • Vector
    • 底层同 ArrayList(动态数组),但线程安全(方法加 synchronized),性能较差。
    • 扩容机制为默认翻倍(可指定增量),已被 ArrayList 替代,不推荐使用。
  • Stack
    • 继承自 Vector,基于数组实现的栈(后进先出),线程安全但性能差,推荐用 Deque 的 push/pop 替代。

2. Set(无序、不可重复、允许 null,最多一个)

  • HashSet
    • 底层基于 HashMap 实现(元素存于 HashMap 的 key 中),无序,查询 / 增删效率高(O (1))。
    • 依赖元素的 hashCode() 和 equals() 保证唯一性,线程不安全。
  • LinkedHashSet
    • 继承自 HashSet,底层用 LinkedHashMap 实现,维护插入顺序(通过链表记录元素顺序)。
    • 性能略低于 HashSet,适合需要顺序的场景。
  • TreeSet
    • 底层基于 红黑树 实现,元素自动排序(自然排序或自定义 Comparator)。
    • 查询 / 增删效率为 O (log n),线程不安全。

3. Queue(队列,FIFO 先进先出,部分支持优先级)

  • ArrayDeque
    • 基于循环数组实现的双端队列(Deque),可作为栈或队列使用,效率高于 LinkedList。
    • 无容量限制(自动扩容),线程不安全。
  • LinkedList
    • 同时实现 Deque 接口,可作为双端队列,增删灵活但查询效率低。
  • PriorityQueue
    • 基于小顶堆实现的优先级队列,元素按优先级排序(自然排序或 Comparator),非 FIFO。
    • 线程不安全,不允许 null 元素。
  • ConcurrentLinkedQueue
    • 线程安全的无界队列,基于链表实现,适合高并发场景(CAS 操作保证安全)。

二、Map 接口(存储键值对 <Key, Value>,Key 唯一)

  • HashMap
    • 底层基于数组 + 链表 / 红黑树实现(JDK 8+ 当链表长度 > 8 时转红黑树),无序。
    • Key 允许 null(仅一个),Value 允许 null,线程不安全,查询 / 增删效率高(O (1))。
    • 初始容量 16,负载因子 0.75,扩容为翻倍。
  • LinkedHashMap
    • 继承自 HashMap,底层多了双向链表维护键值对的插入顺序或访问顺序(可用于 LRU 缓存)。
    • 性能略低于 HashMap,线程不安全。
  • TreeMap
    • 底层基于红黑树实现,Key 自动排序(自然排序或 Comparator)。
    • Key 不允许 null,查询 / 增删效率 O (log n),线程不安全。
  • Hashtable
    • 古老的哈希表实现,线程安全(方法加 synchronized),但性能差。
    • Key 和 Value 均不允许 null,已被 ConcurrentHashMap 替代。
  • ConcurrentHashMap
    • 线程安全的哈希表,JDK 7 基于分段锁,JDK 8+ 基于 CAS + synchronized 实现,并发性能优异。
    • 支持高并发读写,Key 和 Value 不允许 null。
  • WeakHashMap
    • Key 为弱引用,当 Key 不再被强引用时,会被 GC 回收,适合缓存场景(如临时数据)。

三、特殊集合(工具类创建)

  • Collections 工具类
    • Collections.singletonList():不可变单元素 List。
    • Collections.emptyList():空集合(不可变)。
    • Collections.synchronizedList(List):包装为线程安全的 List(同理可包装 Set/Map)。
  • 枚举集合
    • EnumSet:专为枚举类型设计的 Set,底层基于位向量,效率极高。
    • EnumMap:Key 为枚举类型的 Map,底层数组实现,查询快。

四、线程安全集合总结

  • List:Collections.synchronizedList(new ArrayList<>())CopyOnWriteArrayList(写时复制,适合读多写少)。
  • Set:Collections.synchronizedSet(new HashSet<>())CopyOnWriteArraySet
  • Map:ConcurrentHashMapCollections.synchronizedMap(new HashMap<>())
  • Queue:ConcurrentLinkedQueueLinkedBlockingQueue(阻塞队列)、ArrayBlockingQueue(有界阻塞队列)。
选择集合时需关注:是否有序、是否允许重复、线程安全性、增删查效率等,根据场景匹配最合适的实现类。

------------------------------------------------------------------------------------------------------

 

Java 集合框架的继承关系以 Collection 和 Map 为两大根接口,衍生出众多实现类。以下是核心继承关系图(简化版,突出常用类):

一、Collection 体系(单值集合)

plaintext
 
 
Iterable (迭代器接口,所有集合的顶层接口)↓
Collection (单值集合根接口)↓
┌───────────┬────────────┬─────────────┐
│           │            │             │
List        Set          Queue         (三大子接口)
│           │            │
│           │            ├─────────────┬─────────────┐
│           │            │             │             │
│           │            Deque         BlockingQueue │
│           │            │             │             │
│           │            ArrayDeque    LinkedBlockingQueue
│           │                           ArrayBlockingQueue
│           │
│           ├────────────┬─────────────┬─────────────┐
│           │            │             │             │
│           HashSet      LinkedHashSet TreeSet       EnumSet
│
├───────────┬────────────┬─────────────┐
│           │            │             │
ArrayList   LinkedList   Vector        Stack(已过时)│CopyOnWriteArrayList(线程安全)
 

二、Map 体系(键值对集合)

plaintext
 
 
Map (键值对集合根接口)↓
┌───────────┬────────────┬─────────────┬─────────────┐
│           │            │             │             │
HashMap     LinkedHashMap TreeMap       Hashtable    WeakHashMap
│                                         │
│                                         Properties(继承自Hashtable,用于配置文件)
│
ConcurrentHashMap(线程安全)
│
EnumMap(键为枚举类型)
 

关键说明:

  1. Iterable:所有集合的顶层接口,提供 iterator() 方法,支持增强 for 循环(for-each)。
  2. Collection:单值集合的根接口,定义了增删改查等通用方法(如 add()remove()size())。
  3. List:有序、可重复,允许 null(如 ArrayList 基于数组,LinkedList 基于链表)。
  4. Set:无序、不可重复,最多一个 null(如 HashSet 基于 HashMap,TreeSet 基于红黑树排序)。
  5. Queue:队列(FIFO),子接口 Deque 支持双端操作(如 ArrayDeque 可作栈 / 队列)。
  6. Map:键值对集合,键唯一(如 HashMap 线程不安全,ConcurrentHashMap 线程安全)。
通过继承关系可快速理解集合的特性(如 LinkedHashSet 继承 HashSet 并维护顺序,TreeMap 实现排序功能)。

------------------------------------------------------------------------------------------------------

 

------------------------------------------------------------------------------------------------------

 

http://www.gsyq.cn/news/43116.html

相关文章:

  • 【ACM出版 | 往届于会后四个月检索】第二届大数据、神经网络与深度学习研讨会(BDNNDL 2025)
  • 2025年成都互联网服务商排名前十强:哪家最强?
  • APB
  • JAVA:Spring Boot 集成 FFmpeg 完成多媒体处理
  • 高一讲课
  • Ubuntu通过命令行安装REALVNC
  • 下载Google Play 的APK,这样可以不用XAPK
  • 在Ubuntu上配置Nginx实现开机自启功能
  • 阿里云的边缘加速ESA
  • Java映射操作:深入Map.getOrDefault与MapUtils方法
  • 改善深层神经网络:第一周优化算法(二)——Mini-batch 梯度下降汇报总结
  • 有度即时通重拳打击电诈行为,守护企业信息安全
  • 基于pytorch卷积神经网络的汉字识别系统
  • 2025年热门成人自考机构推荐
  • CANopen转Profinet是一种构建于控制局域网设备之上的协议网关
  • 2025年国内成人自考机构口碑推荐榜单:如何选择靠谱的学历提升平台
  • 2025年11月星光喷头厂家推荐排行榜:专业选购与维护指南
  • Spring Cloud Alibaba + Sentinel
  • 德鲁克管理哲学:管理是知行统一的实践创新 - 详解
  • 2025 年 11 月食堂送菜平台推荐排行榜,送菜上门,食堂送菜公司,饭堂送菜平台,专业高效与新鲜直达服务口碑之选
  • 2025 年 11 月电能质量分析仪厂家推荐排行榜,A类/B类电能质量分析仪,动态电能质量监测仪,三相电能质量分析仪,在线检测装置系统公司推荐
  • 2025 年 11 月开窗器厂家推荐排行榜,链条开窗器,机芯开窗器,配件开窗器,优质开窗器公司推荐
  • 2025 年 11 月包装机厂家推荐排行榜,全自动/定量/FFS/25公斤/粉料/颗粒料/肥料/树脂/抽真空/底充式/锂电/零排放/吨袋包装机公司推荐
  • 2025 年 11 月码垛机厂家推荐排行榜,全自动码垛机,高位码垛机,低位码垛机,立柱码垛机,编织袋码垛机,纸箱码垛机,桶码垛机,粉料码垛机,肥料码垛机公司推荐
  • 2025 年 11 月包装称厂家推荐排行榜,全自动/定量/FFS重膜/高速/锂电/零排放/螺旋/吨袋包装称,铜精粉/肥料吨包包装称公司精选
  • gxyz圣经
  • 涡街流量计温度数据的协议桥梁:ModbusRTU转Profinet网关的自动化应用
  • git 添加大文件
  • 第一周--3:使用远程终端登录系统(ubuntu和rocky),并且总结linux系统基础命令
  • 2025年聚硅氧烷漆批发厂家权威推荐榜单:聚硅氮烷漆/防腐油漆厂家/工业防腐漆源头厂家精选