Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HashMap上的Java-containsKey()返回null-它是否检查确切的对象而不仅仅是匹配的键?_Java_Hashmap_Pass By Reference_Pass By Value_Containskey - Fatal编程技术网

HashMap上的Java-containsKey()返回null-它是否检查确切的对象而不仅仅是匹配的键?

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中的键,因为数组不会覆盖对象的

我有一个整数[],整数[]的哈希映射。其中一项是:

权重.put(新整数[]{0,0,0,0,0},新整数[]{20,20,15,15,10,10,5,5})

然后我打电话:

概率=权重。获取(治安官和强盗的位置)

其中,治安官的职位是:

整数[]sheriffandbandingspositions=新整数[]{0,0,0,0}

这导致概率为空。为什么会这样?如果无法执行上述操作,如何检查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也提供了一些实用程序。啊,该死,谢谢你提供的信息@詹姆斯一世添加了一个轻微的变通方法。也许你会感兴趣。番石榴也有一些实用程序。啊,该死,谢谢你的信息@詹姆斯一世添加了一个轻微的变通方法。你可能会感兴趣。