如何检查哈希图是否包含自定义 class 类型的键?
How can I check if a hashmap contains a key of a custom class type?
我有一个 hashmap,其键是自定义 class 类型 (class A),我想检查子 class B (B extends A) 是否显示为地图中的一个键。
IntelliJ 没有给我以下代码的警告,但它没有进入语句。
有什么问题吗?
HashMap<A, Integer> map = new HashMap<A, Integer>();
map.put(new B(), 1);
if (map.containsKey(new B())) {
System.out.println("Success!");
}
您正在检查 Map
是否包含 class B
的特定实例的 key
(不是 class 本身)。
如果您需要检查 Map
是否包含 class B
的键,您可以这样做:
boolean hasClass = map.keySet().stream().anyMatch(B.class::isInstance);
您正在创建 B() 对象的新实例,而该新实例不在 HashMap 中。尝试将代码更改为
HashMap<A, Integer> map = new HashMap<A, Integer>();
B keyToBeTested = new B();
map.put(keyToBeTested, 1);
if (map.containsKey(keyToBeTested) {
System.out.println("Success!");
}
我有一个 hashmap,其键是自定义 class 类型 (class A),我想检查子 class B (B extends A) 是否显示为地图中的一个键。
IntelliJ 没有给我以下代码的警告,但它没有进入语句。 有什么问题吗?
HashMap<A, Integer> map = new HashMap<A, Integer>();
map.put(new B(), 1);
if (map.containsKey(new B())) {
System.out.println("Success!");
}
您正在检查 Map
是否包含 class B
的特定实例的 key
(不是 class 本身)。
如果您需要检查 Map
是否包含 class B
的键,您可以这样做:
boolean hasClass = map.keySet().stream().anyMatch(B.class::isInstance);
您正在创建 B() 对象的新实例,而该新实例不在 HashMap 中。尝试将代码更改为
HashMap<A, Integer> map = new HashMap<A, Integer>();
B keyToBeTested = new B();
map.put(keyToBeTested, 1);
if (map.containsKey(keyToBeTested) {
System.out.println("Success!");
}