Java8 HashMap源码分析
java.util.HashMap 是最常用的java容器类之一, 它是一个线程不安全的容器. 本文对JDK1.8.0中的HashMap实现源码进行分析. HashMap 使用位运算巧妙的进行散列并使用链地址法处理冲突. 自JDK1.8后, 若表中某个位置元素数超过阈值 则会将其自动转换为红黑树来提高检索效率. HashMap 中的迭代器同样采用 fail-fast 机制, 即若迭代过程中容器发生结构性改变, 则会终止迭代. HashMap 主要有三个视图接口 keySet() , values() , entrySet() . 它们都是基于迭代器实现的, 并不实际存储数据. 哈希表 自JDK1.8.0开始HashMap使用静态内部类 Node 来存储键值对结构, 不再使用 Map.Entry : static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key, V value, Node<K,V> next) {...} public final K getKey() { return key; } public final V getValue() { return value; }