这是一个简短的教程,介绍如何在一行中创建一个数组列表并初始化对象。
通常情况下,你可以通过以下几行代码来创建和插入数组。
ArrayList names = new ArrayList();
places.add("Name1");
places.add("Name2");
places.add("Name3");
我们如何用单行代码重构上述代码?
是的,我们可以用多种方法来做,这将有助于拥有静态的固定数据,可以在单元测试或任何地方使用。
让我们讨论一下创建和初始化的多种方式。这些例子在声明List时使用了固定大小的元素。
Arraylist匿名内类
这是用双括号语法声明匿名内类和新数组的方法之一。
我们可以直接调用实例方法,在这种情况下,add 方法被调用,唯一的缺点是你创建并扩展了arraylist,即子类。
这是初始化数组的方法之一,不应该用于此目的。
ArrayList names = new ArrayList() {{
add("Name1");
add("Name2");
add("Name3");
}};
使用List inline initialize
就像变量初始化一样,这可以用来初始化List 类List 类是一个不可变的类,不可能用ArrayList 。
List names = ["Name1", "Name2", "Name3"];
还有一种方法是用Arrays asList方法来创建不可变的列表
List names = Arrays.asList("Name1", "Name2", "Name3");
使用Arrays.asList来创建可变的ArrayList
ArrayList 构造函数接受 List作为参数,可以使用Arrays.asList方法创建列表。
ArrayList names = new ArrayList<>(Arrays.asList("Name1", "Name2", "Name3"));
java9的列表方法
在java9版本中,List和Set类有重载的方法。你可以查看更多关于java9的方法。
同样,我们可以使用of 方法创建Set 和Map 。
List names = List.of("Name1", "Name2", "Name3");
java8流
java8引入了流来处理和操作集合。
- 首先使用Stream.of()方法创建一个数据流并返回流的集合。
- 用java.util.stream.Collectors.toList方法将这个流传递给集合,返回List对象。
List names = Stream.of("Name1", "Name2", "Name3").collect(toList());
总结
我们已经学会了使用不同的方法来创建一个可变的ArrayList和不可变的List的多种方法。
你可以根据你的java版本进行选择,如果你需要更新列表,就使用可变ArrayList。