JDK9新特性之:添加集合元素的優化

通常,我們在代碼中創建一個集合(例如,List 或 Set ),並直接用一些元素填充它。 實例化集合,幾個 add方法 調用,使得代碼重複。

public class Demo01 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("abc");
        list.add("def");
        list.add("ghi");
        System.out.println(list);
    }
}

Java 9,添加了幾種集合工廠方法,更方便創建少量元素的集合、map實例。新的List、Set、Map的靜態工廠方法可以更方便地創建集合的不可變實例。

新特性

  • List接口、Set接口、Map接口增加了一個靜態的方法of():可以給集合一次性添加多個元素
static <E> List<E> of(E... elements)

使用前提

當集合中存儲的元素的個數已經確定了,不在改變時使用

注意

  1. of方法只適用於List接口,Set接口,Map接口,不適用於接口的實現類​
  2. of方法的返回值是一個不能改變的集合,集合不能再使用add、put方法添加元素,會拋出異常
  3. Set接口和Map接口在調用of方法的時候,不能有重複的元素,否則會拋出異常

解析

  • of方法只是MapListSet這三個接口的靜態方法,其父類接口和子類實現並沒有這類方法,

    比如 HashSetArrayList

  • 返回的集合是不可變的;增加或刪除都不行!!

代碼:

import java.util.List;
import java.util.Map;
import java.util.Set;

public class Demo01JDK9 {
    public static void main(String[] args) {
        List<String> list = List.of("a", "b", "a", "c", "d");
        System.out.println(list);//[a, b, a, c, d]
        //UnsupportedOperationException:不支持操作異常
        //list.add("w");
        //list.remove(2);

        //Set<String> set = Set.of("a", "b", "a", "c", "d");
        // IllegalArgumentException:非法參數異常,有重複的元素
        Set<String> set = Set.of("a", "b", "c", "d");
        System.out.println(set);
        //UnsupportedOperationException:不支持操作異常
        //set.add("w");

        //Map<String, Integer> map = Map.of("張三", 18, "李四", 20,"張三",19);
        //IllegalArgumentException:非法參數異常,有重複的元素
        Map<String, Integer> map = Map.of("張三", 18, "李四", 19, "王五", 20);
        System.out.println(map);//{王五=20, 李四=19, 張三=18}
        //UnsupportedOperationException:不支持操作異常
        //map.put("趙四",30);
    }
}

結果:

[a, b, a, c, d]
[a, b, c, d]
{王五=20, 李四=19, 張三=18}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章