到目前为止,我尝试了以下代码,但它不起作用。
HashMap<long, HashSet<long>> hm = new HashMap<>();
我知道原因很长没有参考,我们需要参考类型。任何评论都非常感谢。
答案 0 :(得分:5)
更好地使用它:
Map<Long, HashSet<Long>> hm = new HashMap<Long, HashSet<Long>>();
永远记住Java Generics用于处理Object和thier方法,因此不允许使用premetive类型。
答案 1 :(得分:0)
您不能将原语用作Generic类型参数,因为它们是需要转换为适当Java类型的编译时构造。
答案 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