Jam*_*mes 1 java hashmap pass-by-reference pass-by-value containskey
我有一个Integer [],整数[]的HashMap.其中一个条目是:
WEIGHTS.put(new Integer [] {0,0,0,0,0},new Integer [] {20,20,15,15,10,10,5,5});
然后我打电话给:
probabilities = WEIGHTS.get(sheriffAndBanditPositions);
其中sheriffAndBanditPositions是:
Integer [] sheriffAndBanditPositions = new Integer [] {0,0,0,0,0};
这导致概率为空.为什么是这样?如果上述不可能,我如何检查HashMap中是否有匹配的Integer []键?谢谢!
数组不工作作为重点HashMap,因为数组不会覆盖Object的hashCode和equals方法.containsKey如果您传递的是传递给的完全相同的实例,则只会返回true put.
您可以使用List或Set作为键而不是数组.
例如 :
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |