最常見的初始化 List 方法為:
List<String> languages = new ArrayList<>(); languages.add("Java"); languages.add("PHP"); languages.add("Python"); System.out.println(languages);
但是實際上,我們並不會直接使用 new ArrayList 來初始化 List。
你可以使用 Guava 的 newArrayList 來直接初始化。
List<String> languages = Lists.newArrayList();
上面 2 種方法初始化的 List 是可變的,因此你可以對初始化成功的 List 進行添加和刪除。
Arrays
使用這個方法初始化的 List 是不可變的。
考慮使用下面的代碼來初始化一個 List。
List<Integer> list1 = Arrays.asList(1,2);
Arrays 是 JDK 的一個類,你可以使用這個類來初始化一個 List。
考察下面的代碼:
List<Integer> list1 = Arrays.asList(1,2); list1.add(3);
將會給你一個:java.lang.UnsupportedOperationException 異常。
這是一個運行時錯誤,不是編譯錯誤。
因此你在編譯的時候是不會提示的。
List
使用這個方法初始化的 List 是不可變的。
考慮使用下面的代碼來初始化一個 List。
List<Integer> list = List.of(1,2);
List 是 JDK 的一個類,你可以使用這個類來初始化一個 List。
考察下面的代碼:
List<Integer> list1 = List.of(1,2); list1.add(3);
將會給你一個:java.lang.UnsupportedOperationException 異常。
將不可變 List 變成可變
如果 List 是不可變的。
我們可以使用 new ArrayList<> 來包裝下就可以了
考察下面的代碼:
List<Integer>list2 = new ArrayList<>(Arrays.asList(1,2)); list2.add(3);
如果使用上面的代碼的話,你創建的 List 就可以是可變的了,可以對創建的 List 進行修改和刪除。