当前位置: 代码迷 >> 综合 >> JDK7 HashMap(一)
  详细解决方案

JDK7 HashMap(一)

热度:52   发布时间:2023-10-08 18:25:00.0

 哈希类集合三个基本存储概念

  • table,存储所有节点数据的数组
  • slot 哈希槽,即 table[i] 的位置
  • bucket 哈希桶,即 table[i] 上所有元素形成的或者集合

  存储所有节点的table数组
       transient Node<K,V>[] table;

  描述一个hash节点信息:

      static class Node<K,V> implements Map.Entry<K,V> {// hash值final int hash;// 键final K key;// 值V value;// 下一个节点HashMap.Node<K,V> next;Node(int hash, K key, V value, HashMap.Node<K,V> next) {this.hash = hash;this.key = key;this.value = value;this.next = next;}public final K getKey()        { return key; }public final V getValue()      { return value; }public final String toString() { return key + "=" + value; }// 计算hashcodepublic final int hashCode() {return Objects.hashCode(key) ^ Objects.hashCode(value);}public final V setValue(V newValue) {V oldValue = value;value = newValue;return oldValue;}// 相等性判断public final boolean equals(Object o) {if (o == this)return true;if (o instanceof Map.Entry) {Map.Entry<?,?> e = (Map.Entry<?,?>)o;if (Objects.equals(key, e.getKey()) &&Objects.equals(value, e.getValue()))return true;}return false;}}

 

 

  相关解决方案