2016-09-23 71 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

編程時我會牢記這一點。非常感謝,並標記爲最佳答案。繼續像你一樣去;) –