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

Java里集合框架包含哪些核心接口

Java集合框架的核心是Collection和Map两个继承分支:Collection下List(有序可重复)、Set(无序不重复)、Queue(队列行为);Map独立存在,强调键值映射和搜索效率;Iterable/Iterator统一再历机制。

Java集合框架的核心接口不是“一堆并列接口”,而是具有明确继承关系和职责分工的结构:顶层是 Collection 和 Map 两个分支不相互继承,解决了两种基本不同的数据组织问题——单值聚合 vs 键值映射。Collection 接口及其三个子接口

Collection 它是单元素容器的根接口,但**它从未直接实现**,实际使用落在其三个子接口上: List:按索引访问有序、可重复、支持。典型的实现 ArrayList(数组,随机访问快)、LinkedList(链表,频繁增删快) Set:无序,不可重复(依赖) equals() + hashCode() 判重)。常见实现:HashSet(哈希表,O(1) 查找)、TreeSet(红黑树,自动排序)、LinkedHashSet(保持插入顺序) Queue:专为“队列行为”设计,强调入队/出队操作。注意:PriorityQueue 不是先进先出,而是优先;ArrayDeque 实现栈和队列的高效双端,比较 Stack 更推荐 Map 接口:独立于 Collection 的键值体系

Map 不继承 Collection,这是初学者最容易误解的一点。它的核心契约是“唯一的键,值可以重复”,所有的实现都围绕着键的搜索效率和顺序保证展开: HashMap:非线程安全,允许 null 键和值,JDK 8 冲突严重时自动转红黑树 LinkedHashMap:在 HashMap 在此基础上维护插入或访问顺序,适用于构建 LRU 缓存 TreeMap:基于红黑树,按钮自然序列或自定义 Comparator 排序,key 不能为 null(除非比较器支持) ConcurrentHashMap:分段锁(JDK 7)或 CAS + synchronized(JDK 8+),替代高并发场景 Hashtable Iterable 和 Iterator:收集遍历的底层统一机制

所有 Collection 所有子接口都是自继承的 Iterable,这意味着它们都可以使用 for-each 循环。真正工作的是 Iterator: 调用 collection.iterator() 返回一个 Iterator 实例 hasNext() 和 next() 是基本操作;remove() 是唯一安全的删除方法(避免 ConcurrentModificationException) forEachRemaining(Consumer)(JDK 8+)剩余元素可以批量消费,比 while 循环更简洁 容易被忽视的关键细节

许多问题实际上卡在边界逻辑上: Collection.isEmpty() 比 size() == 0 更安全-一些懒加载集合(如 MyBatis 返回的延迟集合)可能在初始化之前进行调整 size() 报 NPE Arrays.asList() 返回的是固定的大小列表,不支持 add() / remove(),扩容必须包装成 new ArrayList(...) HashMap 设置初始容量 2 的幂次(如 16)可以减少哈希冲突;负载因子 0.75 这是时间和空间的妥协。盲目调整会导致频繁扩容 TreeSet 和 TreeMap 要求元素必须可比,否则运行时报 ClassCastException,不是编译错误 Set set = new HashSet<>(); set.add("a"); set.add("b"); // 以下行不会报错,但也不会改变集合内容 set.add("a"); // 重复元素被忽略 Map map = new HashMap<>(); map.put(key1”, 100); map.put(key2”, 200); // key 重复时,新 value 覆盖旧 value map.put(key1”, 300); // 此时 "key1" 对应 300 清晰的结构并不意味着使用无坑。在特定场景中判断使用真正困难的是 LinkedHashSet 还是 TreeSet,该让 HashMap 这些决策背后是对数据特征和操作模式的判断。

http://www.jsqmd.com/news/519720/

相关文章:

  • 2026年学霸同款 8个AI论文工具:本科生毕业论文写作与格式规范全测评
  • (全网最全)分享8款AI工具,快速降低论文AIGC率!
  • MicroROS WiFi通信实战:如何用UDP协议实现ROS2节点无线调试(含避坑指南)
  • 在Java中如何处理长数字读写
  • 10款主流论文降ai工具推荐(2026年免费降AI工具推荐,含免费降ai率版)
  • 看完就会:AI论文平台,千笔写作工具 VS 灵感风暴AI,毕业论文全流程更省心!
  • 安培环路定理实战指南:从无限大平面到圆柱导体的5种经典模型拆解
  • 如何在Linux系统中安装Java
  • 【架构心法】撕碎“0与1”的完美幻觉:顶级嵌入式软件架构师的物理学防线与硬件分析底牌
  • React15 - React CSS Modules BEM命名实践
  • 在Java里Comparable接口解决了什么问题
  • 没有独立显卡也能玩转OmniParser?Win10无GPU环境搭建实测与避坑指南
  • 【架构心法】撕碎“永不宕机”的傲慢:顶级控制系统的绝对底线,论“快速失效(Fail-Fast)”的物理级慈悲
  • Ubuntu安装后必做第一步:手把手教你换清华/阿里源,让apt-get飞起来
  • FileZilla+FTP服务器搭建:如何安全共享文件给远程团队(含权限配置详解)
  • 【2026年最新600套毕设项目分享】springboot林业资源管理系统(14223)
  • 别再复制粘贴了!Qt6 QML自定义控件从开发到发布,保姆级避坑指南(含插件制作)
  • 【2026年最新600套毕设项目分享】springboot尿毒症健康管理系统(14224)
  • 多尺度特征融合在目标检测中的实战应用与优化策略
  • 在CLion中配置LVGL模拟器:从环境搭建到界面调试
  • 论文写不动?AI论文网站千笔 VS 文途AI,全场景通用更高效!
  • Ubuntu下CLion切换Clang编译器完整指南(解决找不到标准库问题)
  • 零基础避坑指南免费录音转文字包教包会,干货轻松掌握
  • 假装这是PSCAD的齿轮箱配置参数
  • 从一次失败的Ping说起:手把手用华为eNSP调试跨网段通信,排查路由配置和ARP缓存的那些坑
  • 救命神器!全学科适配论文神器 —— 千笔
  • Win10系统下TwinCAT3安装全攻略:从下载到激活的保姆级教程
  • 西门子博途 SiVArc,标准程序功能块自动生成Wincc画面和变量 借助西门子SiVArc
  • Java网络嗅探工具jNetPcap入门:从安装到抓包的全流程指南
  • Java高并发已经烂大街了!