当我们使用Arrays.asList
或者Java 9的List.of
方法创建一个List时,返回的都是固定大小的不可变List,不可变意味着我们不能对List进行修改,否则它会抛出UnsupportedOperationException
。
JavaListExample.java
package com.mkyong;
import java.util.Arrays;
import java.util.List;
public class JavaListExample {
public static void main(String[] args) {
// 不可变列表,不能随意修改
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
// 不可变链表,使用Java 9的List.of方法创建
List<Integer> list2 = List.of(1, 2, 3, 4, 5);
//list.add(6); // UnsupportedOperationException
list.add(6); // UnsupportedOperationException
}
}
输出
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.AbstractList.add(AbstractList.java:153)
at java.base/java.util.AbstractList.add(AbstractList.java:111)
解决方法
如果我们希望创建一个可以修改的List,我们可以使用ArrayList
:
JavaListExample.java
package com.mkyong;
import java.util.ArrayList;
import java.util.List;
public class JavaListExample {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6); // 修改list
list.forEach(System.out::println);
}
}
输出
1
2
3
4
5
6