Java Collections Framework(JCF)

Java Collections Framework(JCF)是一个标准化的、分层的接口与实现体系,用于高效存储和操作对象集合。其成员可分为五大核心部分,以下是结构化梳理:


📦 一、顶层接口

  1. Collection<E>

    • 所有单列集合的根接口,定义基础操作(add, remove, contains等)。
    • 子接口:
      • List<E>:有序可重复集合(如 [A, B, A]),支持索引访问。实现类:ArrayList, LinkedList, Vector
      • Set<E>:无序不可重复集合(如 {A, B})。实现类:HashSet, TreeSet, LinkedHashSet
      • Queue<E>:队列模型,支持FIFO操作。子接口 Deque<E>(双端队列)允许两端操作。
  2. Map<K,V>

    • 键值对集合(双列集合),每个键映射唯一值。
    • 子接口:
      • SortedMap<K,V>:按键排序的Map(如 TreeMap)。
      • ConcurrentMap<K,V>:线程安全的Map(如 ConcurrentHashMap)。

⚙️ 二、核心实现类

List 实现类
类名数据结构特点
ArrayList动态数组随机访问快(O(1)),增删慢(需移动元素)。
LinkedList双向链表增删快(O(1)),随机访问慢(需遍历)。
Vector动态数组线程安全但性能低,已逐渐被 ArrayList 替代。
Set 实现类
类名数据结构特点
HashSet哈希表基于 HashMap 实现,查询快(O(1)),无序。
TreeSet红黑树元素自动排序,需实现 Comparable 或提供 Comparator
LinkedHashSet链表+哈希表保留插入顺序,性能接近 HashSet
Queue/Deque 实现类
类名特点
ArrayDeque数组实现双端队列,高效无锁。
PriorityQueue堆实现优先级队列,元素按自然顺序或自定义顺序出队。
Map 实现类
类名数据结构特点
HashMap哈希表允许 null 键/值,非线程安全,查询快。
TreeMap红黑树键自动排序,支持范围查询。
LinkedHashMap链表+哈希表保留插入顺序或访问顺序。
ConcurrentHashMap分段锁哈希表高并发场景首选,线程安全且性能优于 Hashtable

🛠️ 三、工具类与辅助接口

  1. 工具类

    • Collections:提供静态方法(如 sort(), reverse(), synchronizedList())用于集合操作。
    • Arrays:操作数组的工具类(如 sort(), binarySearch())。
  2. 迭代器与比较器

    • Iterator<E>:基础遍历接口(hasNext(), next(), remove())。
    • Comparator<T>:自定义排序规则(如 Comparator.comparing(User::getName))。
    • Comparable<T>:对象自然排序接口(需实现 compareTo())。

🚀 四、并发集合(java.util.concurrent 包)

类/接口用途
CopyOnWriteArrayList写时复制List,读操作无锁,适合读多写少场景。
BlockingQueue阻塞队列(如 ArrayBlockingQueue),生产者-消费者模型核心组件。
ConcurrentSkipListMap跳表实现的并发 SortedMap,支持高并发排序。

💎 总结:框架层次关系

Collection
List
Set
Queue
Deque
Map
SortedMap
ConcurrentMap
ArrayList
LinkedList
HashSet
TreeSet
TreeMap
ConcurrentHashMap

关键特点

  • 动态扩展:多数集合类自动扩容(如 ArrayList 默认容量10,扩容1.5倍)。
  • 线程安全选择
    • 非并发场景:ArrayList, HashMap(性能最优)。
    • 并发场景:ConcurrentHashMap, CopyOnWriteArrayList(避免使用遗留的 Vector/Hashtable)。
  • 性能权衡
    • 随机访问:选 ArrayList(优于 LinkedList)。
    • 频繁增删:选 LinkedListArrayDeque

完整实现类列表可参考 Java Collections Framework官方文档

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一周一志程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值