java - 哪种列表初始化方式更好

标签 java

我想知道,列表的初始化方式哪种更好?


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/

相关文章:

java - 如何获取日期和时区格式

java - 我的 JAX-RS 资源服务中的 @FormParam 参数始终为 null

java - Apache HttpClient : Limit total calls per second

java - 是否存在可以帮助查找 PMML 语法和/或逻辑错误的 PMML 调试器?

java - Java 类可以模拟另一个 Windows 用户吗?

java - 如何设置 JFrame 背景透明但 JPanel 或 JLabel 背景不透明?

java - 将json解析为Gson中的字符串

java - java中的约束满足

java - 如何加密一个android应用程序让客户端看不到源代码?

java - 将 JVM 堆大小设置为至少 8GB