ArrayList可以处理java中的大数据集吗?

问题描述 投票:0回答:1

我需要在集合对象中存储大约 100000 - 200000 条记录。截至目前,我计划使用 ArrayList,但我很想知道存储这么大的列表的最佳方式。

你们中有人能帮我想出一些关于如何将大量数据存储到 Collection 中的想法吗?哪一个是高效的、在落地后表现良好、价格实惠?

ArrayList:通过分配新的内存块动态增长,可能会导致碎片。有什么方法可以在创建对象本身时定义大小吗?这是正确的定义方法吗?我还需要更改 java 堆大小吗?

我还应该考虑其他数据结构吗?

java arraylist data-structures
1个回答
0
投票

高效处理大量记录需要选择正确的数据结构。以下是简化的选项:

数组列表:

  • 有利于通过索引轻松访问。
  • 设置初始大小以减少调整大小的开销:
    ArrayList<Type> list = new ArrayList<>(initialCapacity);
  • 如果发生内存错误,请增加 Java 堆大小。

链表:

  • 中间添加/删除效率高,但随机访问速度慢。

哈希集/树集:

  • HashSet 确保唯一性,TreeMap 按排序顺序存储。
  • 对于快速查找很有用,但 HashSet 中没有固有的顺序。

哈希映射/树形映射:

  • 键值对,可通过键快速检索。

数组双端队列:

  • 适合队列 (FIFO) 或堆栈 (LIFO) 操作。

注意事项:

  • 根据您最常使用数据执行的操作进行选择。
  • 考虑内存使用与性能。
  • 检查您是否需要针对特定操作(例如查找或插入/删除)进行优化。

您可以考虑的一些见解:

  • 预分配空间以减少调整大小。
  • 如果需要大型数据集,请增加 Java 堆大小。
© www.soinside.com 2019 - 2024. All rights reserved.