方法一:
Collections.addAll()
方法内部会迭代传递给它的元素列表,并将每个元素添加到目标集合中。
List<Integer> list = new ArrayList<>();Collections.addAll(list,1,2,3,4,5);
方式二:
ArrayList
类有一个构造函数,它接受一个 Collection
类型的参数,并使用该参数中的元素初始化列表。在这个例子中,传递给 ArrayList
构造函数的参数是一个由 Arrays.asList()
方法返回的列表,因此 ArrayList
将使用该列表中的元素来初始化自己。
List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,5));
方式三:
匿名内部类: 在 Java 中,匿名内部类是一种没有名字的局部类,它可以在创建对象的同时定义类的实例化过程。在这个例子中,
new ArrayList<>() { ... }
创建了一个匿名内部类的实例,该内部类是ArrayList
的一个子类。构造代码块: 匿名内部类中的代码块被称为构造代码块,它们在对象创建时被执行,并且在构造函数执行之前执行。在这个例子中,
{ ... }
中的代码块被称为构造代码块,它包含了一系列的add()
方法调用,用于向列表中添加整数元素。工作原理: 当创建匿名内部类的实例时,首先会执行构造代码块中的代码,然后再执行父类的构造函数。在这个例子中,构造代码块中的
add()
方法调用会将整数 1 到 5 依次添加到列表中。最后,创建的列表对象被赋值给了List<Integer>
类型的变量list
。这种方式的好处是,可以在创建对象时执行一些额外的初始化代码,而无需为类定义一个具名的子类。这在一些情况下非常方便,尤其是当需要对对象进行一些特定的初始化操作时。
List<Integer> list = new ArrayList<>(){{add(1);add(2);add(3);add(4);add(5);}};