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