Java 集合框架

1. 集合框架概述

Java 集合框架(Java Collection Framework, JCF)是 Java 语言中用于存储、操作和管理数据集合的一整套标准接口和类。它提供了对各种数据结构(如列表、队列、集合、映射等)的支持,使开发者能够高效地管理数据。

1.1 集合框架的分类

Java 集合框架主要分为两大类:

  1. Collection 接口(单列集合)

    • List(有序、可重复)

    • Set(无序、不重复)

    • Queue(队列,FIFO 结构)

  2. Map 接口(键值对集合)

    • HashMap(无序)

    • TreeMap(有序)

    • LinkedHashMap(保持插入顺序)


2. Collection 接口及其实现类

2.1 List 接口(元素有序、可重复)

List 接口的实现类主要有:

  • ArrayList(底层基于动态数组,查询快,增删慢)

  • LinkedList(底层基于双向链表,增删快,查询慢)

  • Vector(类似 ArrayList,但线程安全,效率低)

2.1.1 ArrayList 的底层实现
  • 采用 动态数组Object[] elementData)存储数据。

  • 默认初始化容量 10,扩容时 容量变为 1.5 倍

  • 适用于 查询频繁增删较少 的场景。

2.1.2 LinkedList 的底层实现
  • 基于 双向链表 结构存储数据。

  • 适用于 增删频繁查询较少 的场景。

2.1.3 Vector 的底层实现
  • 与 ArrayList 类似,但 线程安全

  • 扩容时 容量翻倍,比 ArrayList 扩容策略更激进。


2.2 Set 接口(元素无序、不可重复)

Set 接口的常见实现类:

  • HashSet(基于 HashMap 实现,元素无序)

  • LinkedHashSet(基于 LinkedHashMap,保持插入顺序)

  • TreeSet(基于红黑树实现,自动排序)

2.2.1 HashSet 的底层实现
  • 基于 HashMap 实现,元素存储在 HashMap 的 key 位置。

  • 依赖 哈希函数 计算存储位置,底层采用 数组 + 链表 + 红黑树 结构。

  • 适用于 去重快速查找 的场景。

2.2.2 TreeSet 的底层实现
  • 基于 红黑树(自平衡二叉搜索树) 存储数据。

  • 适用于 需要自动排序 的场景。


2.3 Queue(队列,FIFO 结构)

  • PriorityQueue(基于 小顶堆,默认升序排序)

  • LinkedList(也可作为队列使用)

2.3.1 PriorityQueue 的底层实现
  • 基于 最小堆(小顶堆) 实现。

  • 适用于 优先级调度 的场景,如任务调度。


3. Map 接口及其实现类

3.1 HashMap(无序存储,允许 null 键值)

  • 采用 哈希表 结构存储数据。

  • JDK 1.8 之后,链表长度超过 8 时转换为 红黑树

  • 适用于 高效键值对存储和查询

3.2 TreeMap(有序存储)

  • 采用 红黑树 存储键值对。

  • 适用于 有序存储,如排行榜、范围查询。

3.3 LinkedHashMap(保持插入顺序)

  • 继承自 HashMap,内部使用 双向链表 维护顺序。

  • 适用于 需要保持插入顺序 的场景。


4. 线程安全的集合

Java 提供了线程安全的集合类,例如:

  • Collections.synchronizedList()

  • Collections.synchronizedMap()

  • ConcurrentHashMap(高效并发 Map)


5. 总结

Java 集合框架提供了丰富的数据结构,每种集合都有其适用场景。在实际开发中,选择合适的集合类型可以提升程序的性能和可读性。

你可能感兴趣的:(java,java)