問題

我想為測試目的建立一個選項列表.首先,我這樣做:

 ArrayList<String> places = new ArrayList<String>();
places.add("Buenos Aires");
places.add("Córdoba");
places.add("La Plata");
 

然後我重構程式碼如下:

 ArrayList<String> places = new ArrayList<String>(
    Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));
 

有沒有更好的方法來做到這一點?

  最佳答案

實際上,可能初始化ArrayList的“最佳”方法是您編寫的方法,因為它不需要以任何方式建立一個新的List:

 ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
 

捕捉到的是,需要相當多的輸入才能引用 list 例項。

有一些替代方案,例如使用例項初始化器製作匿名內部類(也稱為“雙支援初始化”):

 ArrayList<String> list = new ArrayList<String>() {{
    add("A");
    add("B");
    add("C");
}};
 

但是,我不太喜歡這個方法,因為你最終得到的是ArrayList的子類,它有一個例項初始化器,並且建立該類只是為了建立一個物件 – 這對我來說似乎有點過分.

如果 Collection Literals提案 for Project Coin 被接受(它計劃在Java 7中引入,但它也不可能是Java 8的一部分.):

 List<String> list = ["A", "B", "C"];
 

不幸的是,它不會幫助您,因為它將初始化一個不可變的List而不是一個ArrayList,此外,如果它將永遠存在,它還不可用.

  相同標籤的其他問題

javacollectionsarraylistinitialization