gpt4 book ai didi

java - Java加载大数据集到ArrayList(ArrayList的最大容量)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:56 25 4
gpt4 key购买 nike

我正在尝试加载超过 2^32 个元素的数据集,并将这些元素放入 ArrayList anArrayList 中。这个数据是按时间顺序排列的,所以我用ArrayList来存储数据来保持顺序。同时,我想快速访问 String elementID 中的元素。现在我正在使用 HashMap 将 elementID 映射到 anArrayList 中的元素对象。我使用整数 currentAddingAt 来跟踪 anArrayList 上的索引以添加元素。相关代码如下:

ArrayList<ElementX> anArrayList;
int currentAddingAt;
HashMap<String, ElementX> elementToObjHashMap;

... ...

public void addAnElement(ElementX e){
anArrayList.add(currentAddingAt, e);
elementToObjHashMap.put(e.getElementID, ArrayList.get(currentAddingAt));
}

当我将 currentAddingAt 的类型从 int 更改为 long 时出现问题。因为根据 Oracle 的文档 (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html),ArrayList 的 get(int index) 方法仅将 int 作为参数。这也让我想知道:

ArrayList 的容量是否可以大于Java 中最大的int 数(2^32)?

在这种情况下,除了使用 ArrayList 和 HashMap 之外还有哪些选择(以保持大型数据集的顺序并仍然能够快速映射从键到对象)?除了纯 Java,我还需要一些库(甚至一些框架)吗?

最佳答案

Can ArrayList's capacity larger than the largest int number in Java(2^32)?

没有。因为它是数组支持的,所以它不能大于 2^31-1。如果您希望 size()toArray() 方法起作用,这适用于所有 Collections

您需要存储列表的列表,但我敢打赌有一个库可以做到这一点。我没有用过那部分,但是Fastutil has big data structures除了它的原始数据结构。

关于java - Java加载大数据集到ArrayList(ArrayList的最大容量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com