
集合
文章平均质量分 92
小健学 Java
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 集合如何实现 Fail-Fast 与 Fail-Safe?迭代器机制详解
Java集合框架中的Fail-Fast和Fail-Safe机制是处理并发修改的两种不同策略。Fail-Fast机制在检测到并发修改时会立即抛出ConcurrentModificationException,以防止数据不一致,常见于ArrayList、HashSet等集合。Fail-Safe机制则通过创建集合的副本来避免并发修改导致的异常,适用于CopyOnWriteArrayList和ConcurrentHashMap等集合。Fail-Fast通过维护modCount字段来实现,而Fail-Safe则通过写原创 2025-05-20 04:00:00 · 914 阅读 · 0 评论 -
你真的理解 equals() 和 hashCode() 吗?Map 正确使用指南
在Java中,Map的实现(如HashMap、LinkedHashMap、ConcurrentHashMap)依赖于对象的equals()和hashCode()方法来确保键的唯一性。hashCode()用于确定键应存储在哪个桶中,而equals()用于确认桶中是否存在逻辑相同的键。为了确保Map的正确行为,必须同时重写这两个方法,并遵循一致性、等价性等契约规则。未正确实现这些方法可能导致HashMap查找失败、Set去重错误等问题。自定义对象作为键时,常见错误包括未重写equals()和hashCode()原创 2025-05-19 00:30:00 · 1275 阅读 · 0 评论 -
TreeMap、TreeSet 为何能自动排序?红黑树原理全解析
TreeMap和TreeSet之所以能够实现自动排序,是因为它们底层采用了红黑树(Red-Black Tree)这种自平衡的二叉搜索树。红黑树通过维护五个关键性质(如节点颜色、根节点为黑色、叶子节点为黑色等)来确保树的高度近似平衡,从而保证插入、删除和查找操作的时间复杂度为O(log n)。TreeMap按Key排序,而TreeSet则基于TreeMap实现,插入元素时会自动维护顺序,并支持自定义排序器(Comparator)。红黑树在插入或删除节点时,会通过旋转和染色操作来保持树的平衡。TreeMap的插原创 2025-05-18 02:45:00 · 1012 阅读 · 0 评论 -
HashMap 底层原理全解析:一文带你理解透彻!
本文深入剖析了HashMap的底层实现和核心操作,揭示了其看似简单的put和get操作背后的复杂性。HashMap的核心结构是数组加链表(或红黑树),通过哈希桶数组存储数据。文章详细解析了put和get操作的流程,包括哈希值的计算、桶位置的定位、链表的遍历和红黑树的转换等。此外,还介绍了哈希扰动函数、扩容机制、红黑树机制以及线程安全问题。文章还对比了JDK1.7和1.8的差异,并提供了HashMap的使用建议和自定义key的hashCode与equals方法的最佳实践。最后,通过多线程put操作的演示,揭示原创 2025-05-17 08:00:00 · 1025 阅读 · 0 评论 -
ArrayList 和 LinkedList 有什么区别?一文讲清底层原理
本文深入探讨了Java中ArrayList和LinkedList的底层实现、性能差异及适用场景。ArrayList基于动态数组,适合频繁随机访问和尾部添加操作,但中间插入删除效率较低;LinkedList基于双向链表,适合频繁插入删除操作,尤其是头尾操作,但随机访问效率较低。文章还详细解析了两者的源码实现,包括初始化、扩容、添加、删除等操作,并对比了内存与GC行为差异。最后,提供了实战场景选型建议和误用警告,强调根据具体需求选择合适的集合类型,以提升代码性能和降低风险。原创 2025-05-16 00:30:00 · 1464 阅读 · 0 评论 -
一文了解 Java 集合框架:List、Set、Map 谁该选?
Java集合框架是开发中常用的工具,但容易误用。本文从底层实现、使用语义和性能差异三个维度全面解析了List、Set和Map。List如ArrayList和LinkedList适用于不同场景,Set如HashSet和TreeSet用于去重和排序,Map如HashMap和TreeMap用于键值对存储。文章还对比了不同集合的适用场景,指出了开发者常见的误区,并解析了ArrayList、HashSet和HashMap的核心源码。此外,提供了集合类线程安全改造方案,如使用Collections.synchroniz原创 2025-05-15 02:00:00 · 765 阅读 · 0 评论