Java 8 中的默认 ArrayList 大小是多少
What is the Default ArrayList size in Java 8
java8 中数组列表的默认大小是多少?据我记得并在 google 上搜索过,我到处都发现默认情况下它是 10,但是当我输出下面的代码时,它正在打印 0。[=26= 中是否发生了任何变化? ] 8个与此相关?
ArrayList<String> arrList = new ArrayList<String>();
System.out.println("size:"+arrList.size());
我的第二个问题是:当我向列表中添加一些元素时,大小会增加之前大小的1.5倍还是只增加1?
PS:有没有办法知道arraylist对象的当前容量?
初始 List
有 capacity
零(除非您另有说明):
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。如果大小等于容量,则容量会增加。
java8 中数组列表的默认大小是多少?据我记得并在 google 上搜索过,我到处都发现默认情况下它是 10,但是当我输出下面的代码时,它正在打印 0。[=26= 中是否发生了任何变化? ] 8个与此相关?
ArrayList<String> arrList = new ArrayList<String>(); System.out.println("size:"+arrList.size());
我的第二个问题是:当我向列表中添加一些元素时,大小会增加之前大小的1.5倍还是只增加1?
PS:有没有办法知道arraylist对象的当前容量?
初始 List
有 capacity
零(除非您另有说明):
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。如果大小等于容量,则容量会增加。