1

“数量未知”是指在创建用于存储它们的任何数据结构时,我不知道最终将存储多少对象。一旦我拥有了所有这些对象,我希望能够遍历所有这些对象,我访问它们的顺序并不重要。我想知道什么是最有效的(在时间和空间上,但主要是时间)在java中执行此操作的方法。

确实对事物中将存在的最大对象数量设置了上限,因此我正在考虑只制作一个这种大小的数组。但我不想浪费空间,而且数组最终可能是实际存储在其中的元素数量的两倍多。

我也在考虑使用 LinkedList,因为我认为迭代它可能比从哈希图之类的其他东西创建迭代器并迭代它更有效。但我不知道从各种 java 数据结构创建迭代器的成本有多大。

那么,有什么想法吗?

4

3 回答 3

7

使用 ArrayList。这将允许您毫无问题地迭代项目。您不会受到尺寸的过度限制,也不必提前知道有多少物品。

于 2012-04-27T01:24:53.080 回答
3

据我所知,听起来您需要一个动态数组。我想您主要关心的是遍历对象,并且您不会在结构中间插入/删除对象。在那种情况下,我认为 Java ArrayList 类会很好地满足您的需求。

于 2012-04-27T01:34:26.060 回答
0

你可以试试向量。Javadocs 的一个小总结: Vector 类实现了一个可增长的对象数组。像数组一样,它包含可以使用整数索引访问的组件。但是,Vector 的大小可以根据需要增加或缩小,以适应在创建 Vector 后添加和删除项目。

它提供随机访问,并针对存储增量进行了优化。此外,如果您没有任何多线程要求,则可以使用不同步的 ArrayList。

于 2012-04-27T01:27:43.590 回答