比較各種初始化 List 方法的便捷性

1 常規方式

常規的 List 初始化方法是先創建一個 ArrayList 對象,然後再把需要初始化的數據一個個添加進列表中,就像這樣:

 List<String> list = new ArrayList<>();
 list.add("a");
 list.add("b");
 list.add("c");

2 匿名內部類方式

匿名內部類方式是使用 {{}} 雙括號語法, 外層的 {} 先定義了一個匿名內部類,然後在內層的 {} 進行數據初始化:

 List<String> list = new ArrayList<String>() {{
     add("a");
     add("b");
     add("c");
 }};

Map 也可以用這種方法進行初始化。

3 數組方式

數組方式是利用數組的 Arrays 工具類來初始化列表。

List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));

因爲 Arrays.asList 返回的是不可變列表,即 Arrays 類內部、靜態的 ArrayList 類,表示爲 Arrays$ArrayList,所以如果需要修改這個 list,就必須再用 new ArrayList<>()包裝一下:

4 Stream 流方式

使用Stream 流方式來初始化列表,JDK8 支持。

List<String> list =Stream.of("a", "b", "c").collect(Collectors.toList());

5 Guava 方式

List<String> list = Lists.newArrayList("a", "b", "c");

這種方式目前來看,最簡潔。使用之前需要先引用 guava 依賴包:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1.1-jre</version>
</dependency>

6 總結

JDK8 以及之前的 JDK版本,筆者推薦使用 Guava 方式來初始化列表,因爲這種方式寫的代碼看起來清爽多了。

Java 項目組也意識到了這個問題,因此在 JDK9 提供了一種更簡單的初始化列表的方式,List.of("a", "b", "c")。但因爲 JDK9+ 目前還不是主流,所以這裏暫不做考慮。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章