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.coloradmin.cn/o/2438570.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!