java-列表最多可以容纳多少数据?
最多可以在Java的java.util.List中添加多少数据?
ArrayList是否有默认大小?
Paul asked 2020-01-10T09:22:20Z
8个解决方案
50 votes
这取决于List的实现。 由于您使用ints为数组建立索引,因此ArrayList不能容纳Integer.MAX_VALUE个以上的元素。 但是,LinkedList并不仅限于此,它可以包含任意数量的元素。
gustafc answered 2020-01-10T09:22:42Z
22 votes
这将取决于实现,但是该限制不是由ArrayList接口定义的。
但是,该接口定义了ArrayList方法,该方法返回Integer.MAX_VALUE。
返回此列表中的元素数。 如果此列表包含超过ArrayList个元素,则返回Integer.MAX_VALUE。
因此,没有限制,但是当您达到ArrayList之后,列表的行为会有所变化
ArrayList(已标记)由阵列支持,并且受限于阵列的大小-即Integer.MAX_VALUE
Bozho answered 2020-01-10T09:23:20Z
12 votes
最多可以在Java的java.util.List中添加多少数据?
这与可以存储在HashMap中的键(对象)数量的理论限制非常相似。
ArrayList的文档未明确记录对元素最大数量的任何限制。 但是ArrayList的文档指出...
返回一个包含此列表中所有元素的数组,并按适当的顺序排列(从第一个元素到最后一个元素); 如实地实施某些方法会遇到麻烦,例如
...因此严格来说,如果列表中包含的元素超过231-1 = 2147483647个元素,则无法忠实地实现此方法,因为这是最大的数组。
有人会说ArrayList ...
返回此列表中的元素数。 如果此列表包含多个ArrayList元素,则返回Integer.MAX_VALUE。
...表示没有上限,但是这种观点导致了许多不一致之处。 请参阅此错误报告。
数组列表有默认大小吗?
如果您指的是ArrayList,那么我会说默认大小为0。但是,默认容量(可以插入元素的数量,而不必强制列表重新分配内存)为10。请参阅默认构造函数的文档。 。
由于具有普通阵列的支持,因此ArrayList的大小限制为Integer.MAX_VALUE。
aioobe answered 2020-01-10T09:24:26Z
9 votes
Integer.MAX_VALUE是一个接口。 列表可以容纳多少数据取决于您选择使用列表的特定实现。
通常,列表实现可以容纳任意数量的项目(如果使用索引列表,则可能限于Integer.MAX_VALUE或Long.MAX_VALUE)。 只要您不用完内存,列表就不会变得“满”或任何东西。
Gerco Dries answered 2020-01-10T09:24:51Z
5 votes
尽可能多的可用内存。 除堆外,没有大小限制。
duffymo answered 2020-01-10T09:25:11Z
2 votes
但是,接口定义了size()方法,该方法返回一个int值。
Returns the number of elements in this list. If this list contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
因此,没有限制,但是在达到Integer.MAX_VALUE之后,列表的行为会有所变化
ArrayList(已标记)由数组支持,并且受限于数组的大小-即Integer.MAX_VALUE
Mohammad answered 2020-01-10T09:25:39Z
0 votes
请参阅下面的arraylist代码,当您创建时默认为10列表
l = new ArrayList();
public class ArrayList extends AbstractList implements List,
Cloneable, Serializable, RandomAccess {
private static final long serialVersionUID = 8683452581122892189L;
private transient int firstIndex;
private transient int lastIndex;
private transient E[] array;
/**
* Constructs a new instance of {@code ArrayList} with ten capacity.
*/
public ArrayList() {
this(10);
}
Dead Programmer answered 2020-01-10T09:25:59Z
0 votes
为java数组中的项目编号应从零开始。 我认为这可以访问Integer.MAX_VALUE + 1个项目。
Oleksy Ostanin answered 2020-01-10T09:26:19Z