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

Java 8中默认的ArrayList大小是多少,java,arraylist,java-8,resize,size,Java,Arraylist,Java 8,Resize,Size,java 8中arraylist的默认大小是多少?据我记忆所及,在谷歌上搜索时,无论在哪里,我都会发现默认值为10,但当我获取下面代码的输出时,它会打印0。Java8中是否有与此相关的更改 ArrayList<String> arrList = new ArrayList<String>(); System.out.println("size:"+arrList.size()); ArrayList arrList=new ArrayList(); System.out

java 8中arraylist的默认大小是多少?据我记忆所及,在谷歌上搜索时,无论在哪里,我都会发现默认值为10,但当我获取下面代码的输出时,它会打印0。Java8中是否有与此相关的更改

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


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

    初始
    列表的
    容量为零(除非您另行指定):

    当它必须增长时,使用以下方法:

    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 ar=new ArrayList();
    字段f=ar.getClass().getDeclaredField(“elementData”);
    f、 setAccessible(true);
    int l=((对象[])f.get(ar)).length;
    系统输出打印Ln(l);//0
    ar.add(“1”);
    intx=((Object[])f.get(ar)).length;
    System.out.println(x);//10
    
    我想你把尺寸和容量搞混了。Size是放置在
    arrayList
    中的元素数,capacity是
    arrayList
    可以容纳的最大元素数。一旦达到最大值,容量就会加倍(如果我没记错的话)


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

    空列表的大小为0。您的意思是“容量”而不是大小。可能的重复,也相关,根据Javadoc,初始容量为10…@OliverCharlesworth确实。。。但是这个代码
    字段f=arrayList.getClass().getDeclaredField(“elementData”);f、 setAccessible(true);intl=((Object[])f.get(arrayList)).length;系统输出打印LN(l)
    将输出一个0…@OliverCharlesworth,这很聪明:)10将被延迟,直到您实际将某个内容放入
    数组列表中。thx,我应该读一下文档。是的,似乎是一个懒惰的实现;)
    
        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