2016-09-23 70 views
0

以下是否存在任何实际性能或差异/良好实践差异?ArrayList构造函数之间的性能和学习差异

List<String> l = new ArrayList<String>() 
{{ 
    add("ohai"); 
    add("Hey;)"); 
    add("Hii"); 
}}; 
// or.. 
List<String> l = new ArrayList<String> (Arrays.asList("ohai" , "Hey;)" , "Hii")); 
// or.. 
List<String> l = new ArrayList<String>() 
{{ 
    addAll(Arrays.asList("ohai" , "Hey;)" , "Hii"); 
}}; 
// or finally.. 
List<String> l = Arrays.asList("ohai" , "Hey;)" , "Hii"); 
+0

我会使用你发现的最简单和最清晰的。随着复杂性的增加,还有更多的方法可以做到这一点。 –

回答

0

双大括号初始化版本将类似的速度,也将是最慢的。这是因为它会创建一个匿名类来在初始化期间运行内部块。双括号初始化可以在语法上很好,如果您只需要创建一次List,则性能下降可以忽略不计。如果您要创建数百个列表,则可能需要选择其他方法。

使用addAll vs add您可能不会看到性能差异。

书写new ArrayList<String>(Arrays.asList(...))创建由Arrays.asList返回的列表的副本,这比仅调用Arrays.asList要慢。

取决于所执行的操作,将列表包装在ArrayList中是一个好主意。例如; ArrayList非常适合做基于索引的查找。

+0

编程时我会牢记这一点。非常感谢,并标记为最佳答案。继续像你一样去;) –