如何在java中用一行字创建和初始化arraylist?

374 阅读2分钟

这是一个简短的教程,介绍如何在一行中创建一个数组列表并初始化对象。

通常情况下,你可以通过以下几行代码来创建和插入数组。

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

就像变量初始化一样,这可以用来初始化ListList 类是一个不可变的类,不可能用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 方法创建SetMap

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。