Java 8 中的默认 ArrayList 大小是多少

What is the Default ArrayList size in Java 8

  1. java8 中数组列表的默认大小是多少?据我记得并在 google 上搜索过,我到处都发现默认情况下它是 10,但是当我输出下面的代码时,它正在打印 0。[=26= 中是否发生了任何变化? ] 8个与此相关?

    ArrayList<String> arrList = new ArrayList<String>();
    System.out.println("size:"+arrList.size());
    
  2. 我的第二个问题是:当我向列表中添加一些元素时,大小会增加之前大小的1.5倍还是只增加1?

PS:有没有办法知道arraylist对象的当前容量?

初始 Listcapacity 零(除非您另有说明):

 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

必须要长大的时候,用这个:

int newCapacity = oldCapacity + (oldCapacity >> 1)

oldCapacity >> 1 是除以二,所以它增长 1.5

需要注意的一件事是,一旦删除元素,容量就不会改变。如果你需要它缩小使用 trimToSize.

10实际上是对的,但是只有当你把一个元素放入ArrayList时:

    ArrayList<String> ar = new ArrayList<>();

    Field f = ar.getClass().getDeclaredField("elementData");
    f.setAccessible(true);
    int l = ((Object[]) f.get(ar)).length;
    System.out.println(l); // 0

    ar.add("1");

    int x = ((Object[]) f.get(ar)).length;
    System.out.println(x); // 10

我认为您混淆了大小和容量。大小是您放入 arrayList 中的元素数,而容量是 arrayList 可以容纳的最大元素数。一旦达到最大值,容量就会翻倍(如果我没记错的话)。

因此,当您将一个元素添加到 arrayList 中时,大小总是会增加 1。如果大小等于容量,则容量会增加。