String key mixing uppercase overwrites entry in Hashmap
在以下代码中:
1 2 3 |
"Planner"条目覆盖"Driller"。 它们各自的哈希码明显不同。 如果键只是小写("司钻"和"计划"),那么放置正常。 但是,由于项目内部的不同原因,无法更改关键案例。
我使用JDK 7 Update 25 64位,但据我所知,String hashcode自早期版本以来一直非常稳定。
你知道发生了什么吗?我怎么能解决它?
只是关于哈希图的评论。 即使两个键的哈希码相同,也不会被覆盖。 对于要被覆盖的值,键必须与
这不是压倒性的。 它只是改变了记录的顺序,因为你使用的是hashmap。 它会根据给定字符串键的哈希值自动排序。 输出地图并查看结果。
穆斯塔法根? 是正确的。
我之前评论过,但是等着看其他答案& 终于决定发布图片。
经过调试
1 2 3 |
在最后一个语句之后,hm(HashMap)有两个带键的元素,你可以看到
和
1 | "Driller".hashCode() =="Planner".hashCode() |
返回false