HashMap上的Java-containsKey()返回null-它是否检查确切的对象而不仅仅是匹配的键?
我有一个整数[],整数[]的哈希映射。其中一项是: 权重.put(新整数[]{0,0,0,0,0},新整数[]{20,20,15,15,10,10,5,5}) 然后我打电话: 概率=权重。获取(治安官和强盗的位置) 其中,治安官的职位是: 整数[]sheriffandbandingspositions=新整数[]{0,0,0,0} 这导致概率为空。为什么会这样?如果无法执行上述操作,如何检查HashMap中是否存在匹配的整数[]键?HashMap上的Java-containsKey()返回null-它是否检查确切的对象而不仅仅是匹配的键?,java,hashmap,pass-by-reference,pass-by-value,containskey,Java,Hashmap,Pass By Reference,Pass By Value,Containskey,我有一个整数[],整数[]的哈希映射。其中一项是: 权重.put(新整数[]{0,0,0,0,0},新整数[]{20,20,15,15,10,10,5,5}) 然后我打电话: 概率=权重。获取(治安官和强盗的位置) 其中,治安官的职位是: 整数[]sheriffandbandingspositions=新整数[]{0,0,0,0} 这导致概率为空。为什么会这样?如果无法执行上述操作,如何检查HashMap中是否存在匹配的整数[]键? 谢谢 数组不能作为HashMap中的键,因为数组不会覆盖对象的
谢谢 数组不能作为
HashMap
中的键,因为数组不会覆盖对象的hashCode
和等于方法containsKey
只有在传递与传递给put
的实例完全相同的情况下才会返回true
您可以使用列表
或集
作为键,而不是数组
例如:
Map<List<Integer>,Integer[]> WEIGHTS = ...
WEIGHTS.put(Arrays.asList(new Integer[]{0,0,0,0,0}), new Integer[]{20,20,15,15,10,10,5,5});
List<Integer> sheriffAndBanditPositions = Arrays.asList(new Integer[]{0,0,0,0,0});
probabilities = WEIGHTS.get(sheriffAndBanditPositions);
映射权重=。。。
权重.put(Arrays.asList(新整数[]{0,0,0,0}),新整数[]{20,20,15,15,10,10,5,5});
List sheriffAndBanditPositions=Arrays.asList(新整数[]{0,0,0,0});
概率=权重。获取(治安官和强盗的位置);
数组不能作为HashMap
中的键,因为数组不会覆盖对象的hashCode
和等于方法containsKey
只有在传递与传递给put
的实例完全相同的情况下才会返回true
您可以使用列表
或集
作为键,而不是数组
例如:
Map<List<Integer>,Integer[]> WEIGHTS = ...
WEIGHTS.put(Arrays.asList(new Integer[]{0,0,0,0,0}), new Integer[]{20,20,15,15,10,10,5,5});
List<Integer> sheriffAndBanditPositions = Arrays.asList(new Integer[]{0,0,0,0,0});
probabilities = WEIGHTS.get(sheriffAndBanditPositions);
映射权重=。。。
权重.put(Arrays.asList(新整数[]{0,0,0,0}),新整数[]{20,20,15,15,10,10,5,5});
List sheriffAndBanditPositions=Arrays.asList(新整数[]{0,0,0,0});
概率=权重。获取(治安官和强盗的位置);
Guava也提供了一些实用程序。啊,该死,谢谢你提供的信息@詹姆斯一世添加了一个轻微的变通方法。也许你会感兴趣。番石榴也有一些实用程序。啊,该死,谢谢你的信息@詹姆斯一世添加了一个轻微的变通方法。你可能会感兴趣。