java hashmap:containsKey 的预期行为

问题描述 投票:0回答:1

这是一个代码片段:

public static void main(String[] args) {
    final byte key = 0;
    Map<Integer, Integer> test = new HashMap<>();
    test.put(0, 10);
    System.out.println(test.containsKey(key));
}

我在控制台上打印了

false
。只有当我将
key
投射到
int
时,我才会得到真实,就像这样

System.out.println(test.containsKey((int)key));

有人可以解释一下这是怎么回事吗?

java dictionary
1个回答
2
投票

put
Integer
作为键,因此
byte
被装箱为
Integer

但是

containsKey
需要一个
Object
另见),所以
byte
被装箱为
Byte
。这个
Byte
与放入地图中的
equals
不同,因为它们是完全不同的类,所以
Integer
返回 false。
    

© www.soinside.com 2019 - 2024. All rights reserved.