1

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

4

2 回答 2

1

这在很大程度上取决于用例。这就是为什么有这么多Collections,毕竟!每个人都适合做不同的事情。

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


最通用的方法是使用数组。严重地。如果要节省内存,请使用数组。

如果这不是一个选项,那么ArrayList这是您的最佳选择,因为它在内部使用数组并且通常是最节省内存的Collection(我认为与 一起ArrayDeque)。它预先分配了一些空间,每次填满时都会变大两倍。因此,请尝试使用正确数量的插槽来构建它,这样就不会使用多余的空间。

如果您正在寻找特定的东西,您可以使用这些:

  • 存储位,使用BitSet
  • 存储原语,使用Trove
  • 如果许多元素将在 中多次出现Collection,您可能需要尝试一些Bag实现,即HashBag;或多
于 2012-05-18T09:29:35.660 回答
0

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

需要收藏吗?不只是一个数组?我会选择 a LinkedList,因为它不像 anArrayListVector(颤抖)那样预先分配空间。

于 2012-05-18T09:20:08.400 回答