我在内存中存储了一个(可能很大)的对象,我想通过long
标识符引用它们。目前,我使用的是标准HashMap<Long, MyClass>
。我想知道是否有更好的方法可以做到这一点,因为直觉上,我认为在long
中包裹Long
并不是真的有意义。
请注意,到目前为止,这个问题仍然有些学术性,到目前为止,我对当前解决方案没有任何性能问题。它可能永远不会变成一个。然而,很快,我预计我需要处理的数据会有大幅增长,而且我开始编制一个想法列表,如果事情变得缓慢,我可能会想看看。
答案 0 :(得分:4)
首先,我真的怀疑这应该是必要的。但如果确实如此,请查看trove4j中的TLongObjectHashMap。这确实如此:)
对于记录,它不包装散列映射,而是使用数组来存储状态。
在该网站上还有一些benchmarks,这可能会有所帮助。
答案 1 :(得分:0)
您可以使用对于密钥而不是Long包装器的原语来编写自己的HashMap实现。切割和粘贴JDK HashMap并不难做到这一点。
你可以保留它,直到你需要它,因为重构应该很简单。 Java的自动装箱将使您可以放入新课程。使用原始long调用java.util.HashMap现在可以在不加框的情况下工作。您需要更改缺少密钥大小写需要null的代码,以检查是否为零。
答案 2 :(得分:0)
如果Java提供的地图不足以满足您的需求,我会感到非常惊讶。如果您的数据集变得如此之大以至于内存将成为一个问题,那么使用数据库会更有意义。