gpt4 book ai didi

java - 创建自定义多键 HashMap

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:55 26 4
gpt4 key购买 nike

我一直在尝试创建自定义 HashMap其中包含 2 个键。用户使用两个参数创建我的类的对象 KV 。该类由 2 HashMaps 组成: native 扩展<Integer, V>和 key 存储<K, Integer> 。所以基本上,每个值有 2 个键: KInteger

当用户想要获取某个项目时,他可以使用 K 来检索这两个项目键或Integer key 。因此,例如,如果用户使用 K然后系统在 keyTable 中查找对于具有此类键的整数,然后使用 Integer查找值 V

public class KeyMap<K, V> extends ConcurrentHashMap<Integer, V> {

private HashMap<K, Integer> keyTable = new HashMap<K, Integer>(10);

@Override
public V get(Object key) {
if (key instanceof V) {
return super.get(keyTable.get(key));
}
return super.get(key);
}

}

但是,我以前从未进行过参数化,因此我无法理解问题所在 - 我得到 Cannot perform instanceof check against type parameter V. Use instead its erasure Object instead since further generic type information will be erased at runtime在线 if (key instanceof V) { .

是否有可能实现我想要的系统?

最佳答案

您不能在运行时执行的任何操作(例如 instanceof 运算符)中使用参数化类型(K 和 V)。在 Java 中,所有参数化信息都在编译时使用,然后从编译的代码中删除。这种删除称为类型删除。 1

我建议您不要依赖键的类型来确定要查找哪个 HashMap,而是查看该键是否是第一个 HashMap 的有效键,如果不是,请尝试第二个。请记住,K 可以是 Integer 类型,这意味着两个 key 类型可以相同。

关于java - 创建自定义多键 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com