在Java中使用最少内存的本机集合

时间:2012-05-18 09:15:47

标签: java memory collections

哪个更快的集合和更小的内存占用,我可以用来存储一些值,以便在后续迭代? (不需要订购)

2 个答案:

答案 0 :(得分:1)

严重取决于用例。这就是为什么毕竟有这么多Collections的原因!每个人都有一个不同的东西。

最重要的是 - Collection您需要什么?除了迭代之外,你还有其他任何动作吗?它会存储多少个元素?是否会复制某些元素?是否存在性能方面或内存方面的限制?没有这些信息,我们只能给您一般答案。


最常用的方法是使用数组。认真。如果要保存内存,请使用数组。

如果那不是一个选项,那么ArrayList是你的最佳选择,因为它在内部使用数组,并且是一般来说效率最高的Collection(与ArrayDeque一起,我认为)。它会预先分配一些空间,每次填满时会增加两倍。因此,尝试使用正确数量的插槽构造它,这样就不会使用冗余空间。

如果您正在寻找特定的东西,可以使用以下内容:

  • 要存储位,请使用BitSet
  • 存储基元,使用Trove
  • 如果许多元素在Collection中出现多次,您可能需要尝试一些Bag实施,即HashBag;或Multiset

答案 1 :(得分:0)

这在很大程度上取决于用例。

它需要是一个集合吗?不只是一个阵列?我会选择LinkedList,因为它不像ArrayListVector(颤抖)那样预先分配空间。