最多可以在Java中的java.util.List中添加多少数据?
是否有ArrayList的默认大小?
答案 0 :(得分:47)
这取决于List
实施。由于您使用int
索引数组,因此ArrayList
不能容纳超过Integer.MAX_VALUE
个元素。但LinkedList
并不以同样的方式限制,并且可以包含任意数量的元素。
答案 1 :(得分:21)
这取决于实现,但限制不是由List
接口定义的。
然而,接口定义了size()
方法,该方法返回int
。
返回此列表中的元素数。如果此列表包含多个
Integer.MAX_VALUE
元素,则返回Integer.MAX_VALUE
。
所以,没有限制,但在你到达Integer.MAX_VALUE
后,列表的行为会改变一点
ArrayList
(已标记)由数组支持,并且仅限于数组的大小 - 即Integer.MAX_VALUE
答案 2 :(得分:11)
最多可以在Java中的java.util.List中添加多少数据?
这与Theoretical limit for number of keys (objects) that can be stored in a HashMap?
非常相似 java.util.List
的文档未明确记录对元素最大数量的任何限制。然而,List.toArray
的文件说明......
以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组; 会忠实地实施某些方法,例如
...严格来说,如果列表中有超过2个 31 -1 = 2147483647元素,那么就不可能忠实地实现这个方法,因为那是最大的可能数组。
有人会争辩size()
...
返回此列表中的元素数。如果此列表包含多个
Integer.MAX_VALUE
元素,则返回Integer.MAX_VALUE
。
...表示没有上限,但此视图会导致许多不一致。请参阅this bug report。
数组列表是否有默认大小?
如果您指的是ArrayList
,那么我会说默认大小为0.默认容量但是(您可以插入的元素数量,而不强制列表重新分配内存)是10.请参阅default constructor。
ArrayList
的大小限制为Integer.MAX_VALUE
,因为它由普通数组支持。
答案 3 :(得分:9)
java.util.List
是一个界面。列表可以容纳多少数据取决于您选择使用的List的具体实现。
通常,List实现可以包含任意数量的项目(如果使用索引列表,则可能限制为Integer.MAX_VALUE
或Long.MAX_VALUE
)。只要你的内存不足,List就不会变成“满”或任何东西。
答案 4 :(得分:5)
尽可能多的可用内存。除了堆之外没有大小限制。
答案 5 :(得分:2)
然而,接口定义了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
答案 6 :(得分:0)
请参阅下面的arraylist默认代码,当你创建时它是10 List l = new ArrayList();
public class ArrayList<E> extends AbstractList<E> implements List<E>,
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);
}
答案 7 :(得分:0)
java数组中的项目编号应该从零开始。这是我认为我们可以访问Integer.MAX_VALUE + 1个项目。