是否有比Java List更长的内容?

2 java arraylist maxlength long-integer

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

这样的List存在吗?

如果是的话,在哪里?

Ste*_*n C 6

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

LinkedList 没有这个限制,但它(但仍然)昂贵:

  • 每个条目都会产生2个引用的内存开销加上对象头的大小...与基于数组的表示的一个引用相比较.

  • 索引是O(N)O(1)基于阵列的列表进行比较的操作.

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

那里可能还有其他选择.

人们还可以设想使用数组数组而不是单个数组的常规数组列表的"大"变体.但是如果允许插入列表的中间,则实现O(1)查找变得困难/昂贵.(这可能就是为什么我找不到谷歌的例子......)


afs*_*tos 5

List文档:

int size()

返回此列表中的元素数.如果此列表包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE.

因此,即使使用标准接口的Listhold Long.MAX_VALUE元素的特定实现,您也不会知道List.

我不确定是否存在,但我的赌注是打开的LinkedList,因为它ArrayList是基于数组的,而那些不能超过Integer.MAX_VALUE元素.