使用long类型的键和long类型为hash的值创建一个hashmap

时间:2015-01-27 23:57:27

标签: java

到目前为止,我尝试了以下代码,但它不起作用。

HashMap<long, HashSet<long>> hm = new HashMap<>();

我知道原因很长没有参考,我们需要参考类型。任何评论都非常感谢。

3 个答案:

答案 0 :(得分:5)

更好地使用它:
Map<Long, HashSet<Long>> hm = new HashMap<Long, HashSet<Long>>();

永远记住Java Generics用于处理Object和thier方法,因此不允许使用premetive类型。

答案 1 :(得分:0)

您不能将原语用作Generic类型参数,因为它们是需要转换为适当Java类型的编译时构造。

参考: Why don't Java Generics support primitive types?

答案 2 :(得分:0)

您需要使用对象作为键。 long是原始的而不是Object。

Hashmap使用几乎为O(1)的查找速度的原因是,当您调用put方法时,它会计算密钥的哈希码并对其进行压缩,并基于此将其置于Linkedlists数组的特定索引中。然后,当您调用get方法时,它会再次快速执行计算(基于键)并在提到的数组中找到正确的索引。 所以键应该是对象,并希望具有良好的哈希码实现。例如,您应该使用Long对象而不是long基元。欲了解更多信息,请查看: How does a Java HashMap handle different objects with the same hash code? http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html