我正在寻找 Java 集合。我唯一的两个期望是:
快速
O(1)
插入/添加操作。迭代此集合的能力。
我不关心元素的顺序。
LinkedList
不是最佳候选,因为有许多小的分配(对于每个新节点)。ArrayList
不是最佳候选,因为当没有剩余空间时,内部数组会调整大小。
您能否提出其他针对此类操作进行优化的 Java 集合?
换句话说,我正在寻找 LinkedList
和 ArrayList
之间的混合体。像 LinkedList
这样的东西,额外的内存分配是为接下来的 N 个元素预先分配的 - 而不是像 LinkedList 那样为每个新元素分配。
最佳答案
由于您非常关心内存分配,因此不要使用 ArrayList
或 LinkedList
,而是使用易于操作和存储大数据的简单数组。
用 ex 分配数组的大小。 1'000'000 个元素:
MyClass[] array = new MyClass[1000000];
- 将对象分配给数组索引的成本也是
O(1)
。 - 使用
for 循环
迭代非常简单。
如果您希望执行其他操作,请使用for-loop
迭代。主要缺点是:
- 声明后大小固定。
- 可以存储单一类型。
另外,考虑 Stream-API(值得尝试,我不知道这里的性能):
Arrays.stream(array)...
关于仅针对添加(插入)操作优化的 Java 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51708941/