数据结构
文章平均质量分 89
悠哉iky
计算机科学与技术在读|Java后端学习者
展开
-
数据结构——HashMap(内含图形演示)
一、底层数据结构,1.7与1.8有何不同?①1.7 数组 + 链表,1.8 数组 + (链表 | 红黑树)细节:1.8的链表和红黑数是可以互相转换的,链表元素比较多的时候,链表就会转成红黑树,元素减少了,红黑树也可以退化成链表。二、为何要用红黑树,为何一上来不树化,树化阈值为何是8,何时会树化,何时会退化为链表?①红黑树用来避免DoS攻击,防止链表超长时性能下降,树化应当是偶然情况①hash表的查找,更新的时间复杂度是O1,而O(1),而。原创 2022-10-06 01:33:35 · 927 阅读 · 0 评论 -
ArrayList底层剖析,iterator的fail-fast和fail-safe机制,ArrayList和LinkedList比较
以上这两句话是不严谨的,首先查询,查询的话,是查询内容,随机访问的只是索引值,两者不能等价。这里涉及到了一个局部性原理,例如以下这张图,a+b运算,首先cpu要读取a和b,再将结果写回c,那cpu计算是纳秒级别的,但是等待数据读写时间是成百倍,所以不能让cpu直接读取内存,要让cpu读取从内存放入缓存的数据。snapshot一开始记录下遍历的数组,他每次调用add方法,都会getArray拿到原来的数组,然后将原来数组复制一份,新增的元素加载了这个复制品,但是遍历的还是旧数组,遍历完成旧数组丢弃。原创 2022-10-04 00:00:53 · 255 阅读 · 0 评论