java - Java 中是否有比 int 更长的列表?

标签 java arraylist long-integer maxlength

我似乎找不到最大长度为 long 最大值的 Java List

这样的List存在吗?

如果是的话,在哪里?

最佳答案

正如 @afsantos 所说,由于 Java 数组的限制,ArrayList 类本质上仅限于 Integer.MAX_VALUE 条目。

LinkedList 没有这个限制,但它(尽管如此)很昂贵:

  • 每个条目都会产生 2 个引用加上对象头大小的内存开销……相比之下,基于数组的表示只需要一个引用。

  • 与基于数组的列表的 O(1) 操作相比,索引是一个 O(N) 操作。

这里是 Java 库的链接,该库使用直接映射内存和/或元素编码来支持巨大内存中集合:

这里是一个巨大集合库的链接,其中包含一个 ArrayList 模拟,它使用 2 级数组(数组的数组)来避免 32 位地址限制。

可能还有其他替代方案。

人们还可以设想常规数组列表的“大”变体,它使用数组的数组而不是单个数组。但是,如果允许插入到列表的中间,则实现 O(1) 查找会变得困难/昂贵。 (这可能就是为什么我无法通过 Google 找到示例的原因...)

关于java - Java 中是否有比 int 更长的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371877/

相关文章:

java - java的list add方法按值传递问题

c# - 将 long 转换为 double 的精度损失有多大?

java - 你如何创建一个大数组?

c - C中的int类型有什么用?

Java GUI 似乎是空白的(swing + awt)

java - Webhook 与发布者和订阅者

java - 使用新方法访问 ArrayList 时出现编译时错误

java - 多维数组列表java

java - 创建列表列表并获取每个列表的最后一项

java - 如何将放心的请求数据记录到 testNG 报告文件