【目录】JDK源码解读目录
# 目录
# java.util
HashMap
HashMap 的 Hash 函数到底有什么意义.md
HashMap 到底为什么是不安全的.md
# java.util.concurrency
ConcurrentHashMap
# java.lang
String.md
ThreadLocal 源码分析.md
ThreadLocal 的哈希算法.md
more...
HashMap的Hash函数到底有什么意义
# jdk1.8 HashMap 中 hash 值计算源码
12345678910/** * 扰动函数 */static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}// 其中的key.hashCode调用的是底层的native方法。public native int hashCode();
Q: 为什么不直接使用 key 的 hashCode...
more...
String类源码解析
一、签名:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence
String 不能被继承,
实现了 Serializable:可被序列化。
实现了 Comparable:可以比较,排序,
实现了 CharSequence:值是可读序列。
二、成员变量:
12345private final char value[]; // 存储字符。private int hash; // 缓存字符串的hash值。Private...
more...
全网最全的 HashMap 源码解读
# 要思考的问题
HashMap 的底层数据结构 (节点结构,这种结构有什么优点)
如何处理 hash 冲突
怎么扩容?扩展机制是什么?
增删改查过程
链表到红黑树的转换过程,反之?
红黑树相关 (见另一篇数据结构之红黑树)
hash 计算
# 达到的目标
掌握底层数据结构
掌握扩容原理
掌握 hash 冲突的处理过程
掌握增删改查过程
# 看之前要掌握的知识点
# 红黑树
# 看之前大体了解的知识点
# hash 算法
# Poisson 分布
poisson 分布
# 开始
# HashMap 的继承体系
AbstractMap: map 的抽象类,以最大限度的减少实现 Map...
more...