在以下代码中:
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("Driller", 0);
hm.put("Planner", 1);
&#34;规划&#34;条目覆盖&#34; Driller&#34;。它们各自的哈希码明显不同。如果键只是小写(&#34;司钻&#34;和#34;计划者&#34;)然后放置正常。但是,由于项目内部的不同原因,无法更改关键案例。
我使用的是JDK 7 Update 25 64位,但据我所知,String hashcode自早期版本以来一直非常稳定。
你知道发生了什么吗?我怎么能解决它?
答案 0 :(得分:1)
这不是压倒一切。它只是改变了记录的顺序,因为你使用的是hashmap。它会根据给定字符串键的哈希值自动排序。输出地图并查看结果。
答案 1 :(得分:1)
只是关于哈希图的评论。即使两个键的哈希码相同,也不会被覆盖。对于要被覆盖的值,密钥必须与equals
方法相等。
答案 2 :(得分:0)
Mustafa Genç是对的。
我之前评论过,但是等着看其他答案&amp;最后决定发布图像。
调试后
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("Driller", 0);
hm.put("Planner", 1);
在最后一个语句之后,hm(HashMap)有两个带键的元素,你可以看到
并且
"Driller".hashCode() == "Planner".hashCode()
返回 false