以下是否有任何实际表现或不良/良好做法差异?
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
非常适合进行基于索引的查找。