我想知道,列表的初始化方式哪种更好?
public class Main {
private final List<String> l = new ArrayList<String>();
{
l.add("a");
l.add("b");
l.add("c");
}
}
public class Main {
private final List<String> l = new ArrayList<String>() {{
l.add("a");
l.add("b");
l.add("c");
}};
}
最佳答案
我更喜欢使用下一种静态工厂方法:
public final class CollectionUtils {
private CollectionUtils() {
}
public static <T> List<T> list(T... data) {
return Arrays.asList(data);
}
public static <T> ArrayList<T> newArrayList() {
return new ArrayList<T>();
}
public static <T> ArrayList<T> newArrayList(T... data) {
return new ArrayList<T>(list(data));
}
}
因此,您可以通过以下方式在您的代码中使用它们:
import static CollectionUtils.list;
import static CollectionUtils.newArrayList;
public class Main {
private final List<String> l1 = list("a", "b", "c");
private final List<String> l2 = newArrayList("a", "b", "c");
}
因此,您可以获得相对紧凑的创建和填充列表的方式,并且不需要复制通用声明。请注意,list
方法只是创建数组的 ListView 。您以后不能向其中添加元素(或删除)。同时 newArrayList
创建普通的 ArrayList
对象。
作为Joachim Sauer请注意,这些实用方法(以及许多其他有用的东西)可以在 Google Collections 中找到库(现在是 Guava 项目的一部分)。
关于java - 哪种列表初始化方式更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190336/