摘要:
本文基于 JDK1.8 我们都知道 HashMap 内部有个属性负载因子用来扩容,那么什么时候才会扩容呢? 源码中还有一个属性 threshold 👇 /** * The next size value at which to resize (capacity * load factor). */ 阅读全文
摘要:
本文基于 JDK1.8 话不多说,看看源码怎么肥四呢 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { ... ... if (p.hash == hash && ((k = p.key) 阅读全文
摘要:
接上文:浅谈 HashMap(一):数据结构底层实现方式 本文基于 JDK1.8 这节讲讲 HashMap 的 put 方法,看似简单的一个存值方法,实则细节满满,且听我娓娓道来 话不多说,先看看源码👇 public V put(K key, V value) { return putVal(ha 阅读全文
摘要:
本文基于 JDK1.8 话不多说,先来个图 众所周知,HashMap 的底层实现是数组+链表+红黑树,那么到底是怎样的呢?我们从源码中看看👇 先来点题外话,如果我们想在 Java 中存储一个数据的时候具体是怎么存的呢?这个问题初看大家会觉得有点废话的意思,且听我细说。我们知道 Map 存储的是 k 阅读全文