Java List抛出UnsupportedOperationException异常

作者 | 2020年5月1日

当我们使用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

发表评论

电子邮件地址不会被公开。 必填项已用*标注