做商贸网站,wordpress event,装修店铺,wordpress新建headerHashMap的设计是由数组加链表的符合数据结构#xff0c;在这里用自己的语言以及结合源码去总结一下#xff0c;如果有不对的地方希望评论指正#xff0c;先拱手谢谢。 HashMap是日常中非常常用的一种数据结构#xff0c;我们要想深入了解学习任何一门技术#xff0c;都是要… HashMap的设计是由数组加链表的符合数据结构在这里用自己的语言以及结合源码去总结一下如果有不对的地方希望评论指正先拱手谢谢。 HashMap是日常中非常常用的一种数据结构我们要想深入了解学习任何一门技术都是要先应用再深入。深入就要了解实现的原理在java语言中最基本的结构是数组以及类变量(引用),HashMap是两者的结合更明确的说HashMap是数组以及链表的结合。 public class HashMapK, Vextends AbstractMapK, Vimplements MapK, V, Cloneable, Serializable
{private static final long serialVersionUID 362498820763181265L;static final int DEFAULT_INITIAL_CAPACITY 16;static final int MAXIMUM_CAPACITY 1073741824;static final float DEFAULT_LOAD_FACTOR 0.75F;static final int TREEIFY_THRESHOLD 8;static final int UNTREEIFY_THRESHOLD 6;static final int MIN_TREEIFY_CAPACITY 64;transient NodeK, V[] table;transient SetMap.EntryK, V entrySet;transient int size;transient int modCount;int threshold;final float loadFactor;
...
} 我们可以看到HashMap维护了一个NodeK,V数组在这里我们再看Node的实现 static class NodeK, Vimplements Map.EntryK, V{final int hash;final K key;V value;NodeK, V next;
.....
} Node维护了四个属性Key,Value,Hash码,以及关键的NodeK,V next每一个Node持有下一个Node形成了链表。 在这里奉上一张HashMap的导图,当我们插入一个值时即插入了一个Node通过Node的key的hashcode与NodeK,V table 数组的长度来计算出这个Node在数组中的位置也就是下标。计算的方法就是hash算法当我们插入一个Node的时候Key是唯一的但是不同的key求出的hashcode转载于:https://www.cnblogs.com/beforedawn/p/6850038.html