JDK
不进则退呢
这个作者很懒,什么都没留下…
展开
-
JDK1.8HashMap源码分析
在前面的1.7中介绍了HashMap是由数组加链表的数据结构组成,1.8之后为了让put、get操作变得更有效率,引入了红黑树。红黑树让我想到了我在数据结构中学习的AVLTree(二叉平衡树),但是红黑树和二叉平衡树虽然都是树形结构,但区别还是很大的。 红黑树有以下五个特性: 1.节点是红色或黑色。 2.根节点是黑色。 3.每个叶子节点都是黑色的空节点。 4 每个红色节点的两个子节点都是黑色。 5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 这种情况就...转载 2020-06-03 01:09:04 · 277 阅读 · 0 评论 -
ConcurrentHashMap 1.7源码解析
因为HashMap中是线程不安全的,因此java又设计了HashTable和ConcurrentHashMap这两个类。 先说说HashTable在多线程中HashTable为了保证线程安全,在put方法和get方法都加入了synchronized锁,这种锁会导致在线程之间的锁竞争激烈的时候,没有获取到锁的情况下,线程等待的时间过长,所以HashTable在多线程的操作中效率尤为低下,不适合开发的使用。 ConcurrentHashMap特有的机制在高...原创 2020-06-02 14:05:33 · 199 阅读 · 0 评论 -
JDK1.7 HashMap源码解析
在jdk1.7中,HashMap底层数据结构是由数组和链表构成,数据存放Entry对象,而Entry对象是对链表头部第一个元素的引用。ArrayList中add方法是通过下标的累加进行数据的插入,HashMap则不同,若向ArrayList一样则会造成HashMap在get(key)时需要一个一个去遍历数组获取对应的key从而取值,而不是像ArrayList一样直接通过get(index)获取值,这样会使HashMap效率低下。 HashMap通过获取key的HashCode值,而Ha...原创 2020-05-28 23:26:57 · 206 阅读 · 0 评论