Map的containsKey遇到的问题
来源:互联网 发布:截面数据举例 编辑:程序博客网 时间:2024/04/28 13:48
最近在coding的过程遇到一个问题:
public class HashMapDemo { public static void main(String[] args) { testGo(); } public static void testGo() { Map<Long, String> badGodMap = new HashMap<>(); badGodMap.put(23L, "jack"); badGodMap.put(24L, "tom"); Integer oneKey = 23; // oneKey是Integer类型的 System.out.println("integer: " + badGodMap.containsKey(oneKey)); // false Long longKey = 23L; // longKey是Long型的 System.out.println("long: " + badGodMap.containsKey(longKey)); // true }}
看了containsKey的源码是要去比较对象的hashCode的以及进行equals判断,让我输出其中的hashCode一探究竟:
public static void testGo() { Map<Long, String> badGodMap = new HashMap<>(); badGodMap.put(23L, "jack"); badGodMap.put(24L, "tom"); Integer oneKey = 23; Long longKey = 23L; System.out.println("integer hashcode: " + getHashCode(oneKey)); // 23 System.out.println("long hashcode: " + getHashCode(longKey)); // 23 } public static int getHashCode(Object key) { return key.hashCode(); }
获取的hashcode都是一样的,
那就是在比较equals的时候出问题了,看Integer的equals源码:
public boolean equals(Object obj) { if (obj instanceof Integer) { //focus here return value == ((Integer)obj).intValue(); } return false; }
看到这里就明白了,类型不一样,进行equals比较肯定会失败:
Integer oneKey = 23; Long longKey = 23L; System.out.println(oneKey.equals(longKey)); // false
0 0
- Map的containsKey遇到的问题
- Map.containsKey() 的一个使用场景.
- Map.containsKey() 的一个使用场景.
- Map的containsKey()与get()方法区别
- Map:containsKey、containsValue 获取Map集合的键值的 值
- java中hashmap使用containsKey的问题
- Map.containsKey() 的一个使用场景.(转)
- 关于HashMap的ContainsKey()
- Map.containsKey方法——判断Map集合对象中是否包含指定的键名
- java Map使用遇到的问题
- HashMap的containsKey方法说明
- HashMap的containskey源码分析
- Java代码优化-在某种情况下避免Map的containsKey方法的使用
- Map.containsKey/Map.containsValue方法——判断Map集合对象中是否包含指定的键名
- Java集合框架(下)之Map的containsKey()与containsValue()方法
- Java Map的containsKey(Object key)和containsValue(Object value)方法
- map.containsKey()方法——判断是否包含指定的键名
- Map 中的containsKey()方法
- JavaScript中Array类型的使用
- Shiro学习总结(二)--Shiro的入门小例子
- KNN(三)--KD树详解及KD树最近邻算法
- C++上机报告3(选择)
- 使用 Java8 Optional 的正确姿势
- Map的containsKey遇到的问题
- KNN(四)--FLANN库介绍及其应用
- 机箱嗡嗡一直响
- 为什么构造函数不能是虚函数?
- 内存管理之memblock添加
- KNN(五)--层次Kmean
- Boostrap-导航
- KNN(六)--LSH算法
- 排序问题(1)