在解决哈希冲突时有一种方法叫链地址法,就是把相同key的value用链表串起来。那么,当用这些相同的key取值时,会得到这个链表,可是链表里有多个值,要返回哪一个值给用户?
2 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
finalNodegetNode(inthash,Objectkey){ Node[]tab;Node first,e;intn;Kk; if((tab=table)!=null&&(n=tab.length)>0&&(first=tab[(n-1)&hash])!=null){if(first.hash==hash&&//检查第一个Node是否性相等((k=first.key)==key||(key!=null&&key.equals(k))))returnfirst;if((e=first.next)!=null){if(firstinstanceofTreeNode)//红黑树中查找return((TreeNode)first).getTreeNode(hash,key); do{//链表查找if(e.hash==hash&&((k=e.key)==key||(key!=null&&key.equals(k))))returne;}while((e=e.next)!=null);}}returnnull;}源码是通过hash和equals比较返回的
慕工程0101907
TA贡献1887条经验 获得超5个赞
HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。当程序执行 map.put(String,Obect)方法 时,系统将调用String的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,都可通过该方法获得它的 hashCode 值。得到这个对象的 hashCode 值之后,系统会根据该 hashCode 值来决定该元素的存储位置。
添加回答
举报
0/150
提交
取消