
Java集合
文章平均质量分 93
Java集合相关文章
_whitepure
这个作者很懒,什么都没留下…
展开
-
Java中常用线程安全的集合
锁定分段,在执行插入、删除或更新操作时,只有操作涉及的分段会被锁定,其他分段不受影响。在进行插入操作时,先根据键的哈希值确定应该操作哪个分段,然后锁定该分段并进行操作。它的基本原理是每次修改操作都会创建该列表的一个新副本,因此读操作不需要加锁,可以并发执行。每个分段独立加锁,细化了锁的粒度,同时允许多个线程同时操作不同的分段,从而提高并发性能。改进了这一点,不再使用固定的分段数量,而是根据当前的容量动态调整分段的数量,从而更好地适应不同的并发场景,提升了并发性能和灵活性。实例时,必须指定初始的分段数量。原创 2024-07-13 20:20:50 · 1070 阅读 · 0 评论 -
HashMap详解
至于开头减1,是因为如果给定的n已经是2的次幂,但是不进行减1操作的话,那么得到的值就是大于给定值的最小2的次幂值,例如,传入4就会返回8。链表长度超过8就转为红黑树的设计,更多的是为了防止用户自己实现了不好的哈希算法时导致链表过长,从而导致查询效率低,而此时转为红黑树更多的是一种保底策略,用来保证极端情况下查询的效率。这种问题多了以后会造成容器中的元素分布不均匀,都分配在同一个数组上,在查询的时候就减慢了查询的效率,另一方面也造成空间的浪费。扩容后,新的索引位置只受到哈希值高位的影响,所以叫高位优化。原创 2021-05-05 22:30:58 · 425 阅读 · 2 评论 -
ArrayList详解
二分查找法:也称为折半查找法,是一种适用于大量数据查找的方法,但是要求数据必须的排好序的,每次以中间的值进行比较,根据比较的结果可以直接舍去一半的值,直至全部找完(可能会找不到)或者找到数据为止。底层是数组,而数组的中的元素内存分配都是连续的,并且数组中的元素只能存放一种,这就造成了数组中的元素地址是有规律的,数组中查找元素快速的原因正是利用了这一特点。在进行添加,删除操作时,会用二分查找法找到将要添加或删除的元素,之后再设置对象的下一个结点来进行添加或删除操作,所以增加删除的效率高。原创 2024-07-16 10:01:51 · 1210 阅读 · 0 评论 -
HashSet详解
如果尝试添加一个已经存在的元素,集合将保持不变,所以该集合在线程不安全的情况下可替代。中添加一个已经存在的元素,新添加的集合元素不会覆盖已有元素,从而保证了元素的不重复。不允许存储重复的元素,即集合中的元素是唯一的。方法,因此这两个对象的散列值是不同的,最终导致集合添加了两个等价的对象。,则说明哈希码冲突,但实际上是不同的对象,此时将新元素添加到。方法比较相等的元素,则不添加,否则添加新元素到集合中。中的元素,而值则是一个占位对象,用来表示键已经存在。,则认为新元素与已存在元素相同,不进行添加操作,返回。原创 2024-07-17 10:09:49 · 1891 阅读 · 0 评论