![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
集合类
文章平均质量分 68
HELLO_ZTY
总结自己学习过程中的难题,问题,谢谢大家的阅读
展开
-
王炸!!!万字图文说透HashMap
比如说当前的容器容量是16,负载因子是0.75,16*0.75=12,也就是说,当容量达到了12的时候就会进行扩容操作。当负载因子是1.0的时候,也就意味着,只有当数组的8个值(这个图表示了8个)全部填充了,才会发生扩容。这就带来了很大的问题,因为 Hash 冲突时避免不了的。当负载因子是1.0的时候,意味着会出现大量的 Hash 的冲突,底层的红黑树变得异常复杂。对于查询效率极其不利。这种情况就是牺牲了时间来保证空间的利用率。因此一句话总结就是负载因子过大,虽然空间利用率上去了,但是时间效率降低了。原创 2024-05-20 23:45:35 · 658 阅读 · 1 评论 -
fail-fast机制
在Java集合框架中,fail-fast机制是指集合在遍历过程中,如果检测到集合被结构性地修改了(比如添加、删除元素),它会立即抛出ConcurrentModificationException异常。然而,fail-fast机制也有其局限性,它并不能保证在多线程环境中完全避免并发修改异常,因为fail-fast是尽力而为的策略,并不是绝对的保证。如果你在遍历过程中尝试添加或删除元素(改变列表的结构),ArrayList会立即意识到这个改变,并抛出异常,而不是允许你继续进行可能会导致不可预知后果的操作。原创 2024-05-20 01:07:30 · 333 阅读 · 0 评论 -
遍历的同时修改一个List的方式
在 foreach的同时修改集合,会触发fail-fast机制,这是因为List的foreach遍历内部使用了迭代器(Iterator),而迭代器设计中包含了一种称为fail-fast机制的错误检测机制。主要是因为List的索引在元素被移除时会发生变化,从List中移除一个元素时,该元素之后的所有元素都会向前移动一位,也就是它们的索引会减少1。Stream每次处理过后都会生成一个新的Stream,不存在并发问题,所以Stream的filter也可以修改list集合。5. 使用Stream的过滤方法。原创 2024-05-20 01:03:16 · 124 阅读 · 0 评论 -
一文总结ArrayList的特点
内部是基于大小可变的数组实现的,内部的元素通过get,set进行操作和访问。原创 2024-05-20 00:02:56 · 660 阅读 · 1 评论