仅针对添加(插入)操作优化的 Java 集合

标签 java list arraylist collections linked-list

我正在寻找 Java 集合。我唯一的两个期望是:

  1. 快速 O(1) 插入/添加操作。

  2. 迭代此集合的能力。

我不关心元素的顺序。

  • LinkedList 不是最佳候选,因为有许多小的分配(对于每个新节点)。
  • ArrayList 不是最佳候选,因为当没有剩余空间时,内部数组会调整大小。

您能否提出其他针对此类操作进行优化的 Java 集合?

换句话说,我正在寻找 LinkedListArrayList 之间的混合体。像 LinkedList 这样的东西,额外的内存分配是为接下来的 N 个元素预先分配的 - 而不是像 LinkedList 那样为每个新元素分配。

最佳答案

由于您非常关心内存分配,因此不要使用 ArrayListLinkedList,而是使用易于操作和存储大数据的简单数组。

用 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/

相关文章:

java - 在 Java 中将值附加到列表的元素

java - 从 Java 调用 C++,但 Java 加载了错误的 Glibc 版本

java - 为什么这个javafx fxml不调整大小?

java - 如何在java中录制声音时减少噪音?

cLISP 中的列表操作

python - 分解 python 列表,即从 python 列表创建变量

Java 客户端使用 DIME 附件调用 WSE 2.0

python - 从列表字典中删除 'nan'

java - 从java中的数组中找出n个缺失元素

java - 如何在处理过程中将类添加到数组列表中?