随笔分类 -  jdk容器

IdentityHashMap与常用的HashMap的区别
摘要:IdentityHashMap与常用的HashMap的区别是: 前者比较key时是“引用相等”而后者是“对象相等”,即对于k1和k2,当k1==k2时,IdentityHashMap认为两个key相等,而HashMap只有在k1.equals(k2) == true 时才会认为两个key相等。——— 阅读全文

posted @ 2024-06-21 23:39 silyvin 阅读(24) 评论(0) 推荐(0) 编辑

为什么hashmap以2的倍数作为桶的长度,同时以2作为扩容倍数
摘要:1 h%n==h&(n-1) 增加运算速度 2 使hash分布更均匀 HashMap源码解析笔记 3 扩容时仅需要多比较1个bit: if ((e.hash & oldCap) == 0) { 重点 newTab[j + oldCap] = hiHead;重点 jdk1.7 1.8 hash map 阅读全文

posted @ 2019-11-29 13:45 silyvin 阅读(1637) 评论(0) 推荐(0) 编辑

jdk1.7 1.8 hash map 区别及一些细节
摘要:1 扩容 1.7 1.8 2 jdk8 引入红黑树 3 1.7 先扩容再插入,1.8先插入再决定是否扩容 4 1.7头插( 同一位置上新元素总会被放在链表的头部位置;这样先放在一个索引上的元素终会被放到Entry链的尾部 ),1.8尾插 细节:为什么是8 1)treenodes的大小大约是常规节点的 阅读全文

posted @ 2019-09-06 15:29 silyvin 阅读(408) 评论(0) 推荐(0) 编辑

hashmap与treemap
摘要:我们知道HashMap的存储位置是按照key这个对象的hashCode来存放的,而TreeMap则是不是按照hashCode来存放,他是按照实现的Comparable接口的compareTo这个方法来存储的,只要compareTo的返回结果为0就表示两个对象相等,那么就存不进去两个对象,后put的就 阅读全文

posted @ 2019-08-25 15:57 silyvin 阅读(146) 评论(0) 推荐(0) 编辑

LinkedHashMap LRU 实现
摘要:输出: put 0可能触发删除 - 0:0可能触发删除 - 1 10put 1可能触发删除 - 0:0可能触发删除 - 2 10put 2可能触发删除 - 0:0可能触发删除 - 3 10put 3可能触发删除 - 0:0可能触发删除 - 4 10put 4可能触发删除 - 0:0可能触发删除 - 阅读全文

posted @ 2019-07-15 22:17 silyvin 阅读(407) 评论(0) 推荐(0) 编辑

HashSet原理 与 linkedHashSet
摘要:http://blog.csdn.net/guoweimelon/article/details/50804799HashSet是Java Map类型的集合类中最常使用的,本文基于Java1.8,对于HashSet的实现原理做一下详细讲解。(Java1.8源码:htt... 阅读全文

posted @ 2018-03-01 09:36 silyvin 阅读(366) 评论(0) 推荐(0) 编辑

HashMap和LinkedHashMap
摘要:http://blog.csdn.net/justloveyou_/article/details/71713781 1.原理 笔者曾在《Map 综述(一):彻头彻尾理解 HashMap》一文中提到,HashMap 是 Java Collection Framework 的重要成员,也是Map族(如 阅读全文

posted @ 2018-01-30 21:43 silyvin 阅读(148) 评论(0) 推荐(0) 编辑

Java 8系列之重新认识HashMap (讲的最好)
摘要:摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.... 阅读全文

posted @ 2018-01-19 11:07 silyvin 阅读(324) 评论(0) 推荐(0) 编辑

HashMap的死循环
摘要:问题最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。由于HashMap并非是线程安全的,所以在高并发的情况下必然会出现问题,这是一个普遍的问题... 阅读全文

posted @ 2018-01-19 08:42 silyvin 阅读(239) 评论(0) 推荐(0) 编辑

HashMap源码解析笔记
摘要:(一) 总结: 0.初始化:大于initialCapacity的最小的2的n次幂,如果initailCapacity为空,取16,为什么取2的n次幂为数组长度,见ex 1.Object.hashCode() 取得32位原始int h 2.h的高位与低位作异或处理,加大低位的随机性,掺杂了高位的部分特 阅读全文

posted @ 2017-10-23 11:06 silyvin 阅读(707) 评论(0) 推荐(1) 编辑

hashmap与hashtable区别
摘要:0.继承不同,HashMap继承AbstractMap,HashTable继承Dictionary1.HashMap是非synchronized的,HashTable则是同步的由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比Has... 阅读全文

posted @ 2017-10-22 22:47 silyvin 阅读(519) 评论(0) 推荐(0) 编辑

ArrayList源码简单剖析 及与linkedlist vector 区别
摘要:Arraylist 主要构造函数 public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object... 阅读全文

posted @ 2017-09-21 11:22 silyvin 阅读(147) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示