小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ArrayList

 my360account 2014-11-19
轉(zhuǎn)載:java怎么用一行代碼初始化ArrayList

我愿意創(chuàng)建列表的選項(xiàng),以測(cè)試的東西。

我正在做:

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

我重構(gòu)代碼做:

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

有這樣做的更好的方法嗎?

感謝閱讀 !

解決方法 1:

其實(shí),可能要初始化的"最佳"方式,ArrayList 是你寫(xiě)的方法,因?yàn)樗恍枰獎(jiǎng)?chuàng)建一個(gè)新的 List 以任何方式:

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

漁獲是相當(dāng)多的鍵入所需,請(qǐng)參閱 list 實(shí)例。

有如使一個(gè)匿名的內(nèi)部類(lèi)的一個(gè)實(shí)例初始值設(shè)定項(xiàng) (也稱(chēng)為一種"雙大括號(hào)初始化") 的方法:

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

不過(guò),我不太喜歡該方法,因?yàn)槭裁茨阕罱K是一個(gè)類(lèi)的子類(lèi) ArrayList 有一個(gè)實(shí)例初始值設(shè)定項(xiàng)和這類(lèi)只是為了創(chuàng)建一個(gè)對(duì)象 — — 只是看起來(lái)像我有點(diǎn)大材小用。

有何好是如果接受 項(xiàng)目硬幣 收集文本的建議,我們可以有 Java 7 中的列表中文字:

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

不幸的是它不會(huì)幫助您在這里,因?yàn)樗鼘⒊跏蓟粋€(gè) List,而不是 ArrayList,此外,它尚未提供,如果它以往任何時(shí)候都將和。

解決方法 2:

如果你,只是將它聲明為列表中沒(méi)有要 ArrayList,它會(huì)更簡(jiǎn)單呢?

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

解決方法 3:

import com.google.common.collect.ImmutableList;

....

List<String> places = ImmutableList.of("Buenos Aires", "Córdoba", "La Plata");

解決方法 4:

漂亮的很多,最簡(jiǎn)單的方法就是 List<String> strings = new ArrayList<String>(asList("foo", "bar", "baz")),如果您必須有一個(gè) ArrayList,否則您應(yīng)該在大多數(shù)情況下只是使用List<String> strings = asList("foo", "bar", "baz")

你說(shuō)你已宣布作為列表一個(gè) ArrayList 在您的代碼中,但您不應(yīng)該做的除非您正在使用的一些成員 ArrayList 在這并不是List,例如 ArrayList.ensureCapacity()

通常您應(yīng)該只是聲明變量,您要使用,它的列表通常是最通用接口的 List,和初始化它們?cè)诰唧w的實(shí)施,例如 ArrayList或 LinkedList。

使用不實(shí)現(xiàn),否則為你會(huì)發(fā)現(xiàn)您要在多個(gè)位置更改,當(dāng)您想要使用另一種實(shí)現(xiàn)的接口。

另一個(gè)例子將總是聲明變量,一個(gè) InputStream 即使它通常是一個(gè) FileInputStream,這是因?yàn)橐惶旌芸炀湍蚱渌藭?huì)想要使用一些另類(lèi)的 InputStream。

解決方法 5:

您可以創(chuàng)建一個(gè)工廠方法:

public static ArrayList<String> createArrayList(String ... elements) {
  ArrayList<String> list = new ArrayList<String>(); 
  for (String element : elements) {
    list.add(element);
  }
  return list;
}

....

ArrayList<String> places = createArrayList(
  "S?o Paulo", "Rio de Janeiro", "Brasília"); 

但并不比你第一次的重構(gòu)。

更新: 更大的靈活性,它可以是一種通用:

public static <T> ArrayList<T> createArrayList(T ... elements) { 
  ArrayList<T> list = new ArrayList<T>();  
  for (T element : elements) { 
    list.add(element); 
  } 
  return list; 
} 

解決方法 6:

只是注意到它在一個(gè)很簡(jiǎn)單的工作方法,如下所示:

 ArrayList arrList = new ArrayList() {"1",2,3,"4" };

List<Customer> listCustomer = new List<Customer>() { new Customer(), new Customer(), new Customer() };

這 C# 3.0 不雙支撐所需的工作。希望這有助于。

解決方法 7:

若要設(shè)置列表填充 N 的默認(rèn)對(duì)象的副本:

ArrayList<Object> list = new ArrayList<Object>(
    Collections.nCopies(1000, new Object())); 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多