列表最多能容纳多少数据?

时间:2010-09-22 09:38:15

标签: java arraylist size

最多可以在Java中的java.util.List中添加多少数据?

是否有ArrayList的默认大小?

8 个答案:

答案 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_VALUELong.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个项目。