未应用 ArrayList 的默认大小
default size of ArrayList isn't being applied
我很难理解为什么 ArrayList 的大小在这里默认为零,而我在另一篇文章中看到的实际上是 10。即使我改尺寸了,不受影响
import java.util.ArrayList;
Class Test{
private static final ArrayList<Long> foo = new ArrayList<>(1000);
public static void main(String[] args) {
System.out.println(foo.size());
}
谁能解释一下?
您必须区分您正在使用的数据结构接口,即 java.util.List
的接口及其内部实现,即 java.util.ArrayList
的接口,这意味着它由具有初始容量的数组,如果其容量不足以容纳所有元素,将重新创建。
构造函数 ArrayList<T>(int n)
不会创建大小为 n 的 java.util.List
,而是创建一个空的 java.util.List
(大小为 0),其中它的实现 java.util.ArrayList
创建了一个大小为 n
.
的内部后备数组
但是 List#size
是接口的一种方法,它报告列表的大小,而不是它不知道的内部后备数组的大小。
因此,如果您想访问元素 10,您会正确地得到一个异常,因为您还没有向列表中添加任何元素。
如果您想用 n 个零初始化它,请参阅 How can I initialize an ArrayList with all zeroes in Java?。
数组
的大小
我们创建了一个大小为 1000 的整数数组,结果如下
Integer[] a = new Integer[1000];
System.out.println("Size of the Array: " + a.length);
结果:
Size of the Array: 1000
ArrayList
的容量
我们创建了一个大小为 1000 的 ArrayList,结果如下
List<Integer> a = new ArrayList<>(1000);
System.out.println("Size of the ArrayList : " + a.size());
结果:
Size of the ArrayList : 0
由于没有添加任何元素,因此大小为 0。
向 ArrayList 添加一个元素并检查大小
List<Integer> a = new ArrayList<>(1000);
a.add(1);
System.out.println("Size of the ArrayList : " + a.size());
结果:
Size of the ArrayList : 1
数组是固定大小但ArrayList 是调整大小
我很难理解为什么 ArrayList 的大小在这里默认为零,而我在另一篇文章中看到的实际上是 10。即使我改尺寸了,不受影响
import java.util.ArrayList;
Class Test{
private static final ArrayList<Long> foo = new ArrayList<>(1000);
public static void main(String[] args) {
System.out.println(foo.size());
}
谁能解释一下?
您必须区分您正在使用的数据结构接口,即 java.util.List
的接口及其内部实现,即 java.util.ArrayList
的接口,这意味着它由具有初始容量的数组,如果其容量不足以容纳所有元素,将重新创建。
构造函数 ArrayList<T>(int n)
不会创建大小为 n 的 java.util.List
,而是创建一个空的 java.util.List
(大小为 0),其中它的实现 java.util.ArrayList
创建了一个大小为 n
.
但是 List#size
是接口的一种方法,它报告列表的大小,而不是它不知道的内部后备数组的大小。
因此,如果您想访问元素 10,您会正确地得到一个异常,因为您还没有向列表中添加任何元素。
如果您想用 n 个零初始化它,请参阅 How can I initialize an ArrayList with all zeroes in Java?。
数组
的大小我们创建了一个大小为 1000 的整数数组,结果如下
Integer[] a = new Integer[1000];
System.out.println("Size of the Array: " + a.length);
结果:
Size of the Array: 1000
ArrayList
的容量我们创建了一个大小为 1000 的 ArrayList,结果如下
List<Integer> a = new ArrayList<>(1000);
System.out.println("Size of the ArrayList : " + a.size());
结果:
Size of the ArrayList : 0
由于没有添加任何元素,因此大小为 0。
向 ArrayList 添加一个元素并检查大小
List<Integer> a = new ArrayList<>(1000);
a.add(1);
System.out.println("Size of the ArrayList : " + a.size());
结果:
Size of the ArrayList : 1
数组是固定大小但ArrayList 是调整大小