【问题标题】:Why java.lang.UnsupportedOperationException thrown when process list [duplicate]为什么进程列表时抛出 java.lang.UnsupportedOperationException [重复]
【发布时间】:2020-06-15 12:15:23
【问题描述】:

通过执行下面的代码为什么我得到java.lang.UnsupportedOperationException

这是代码。

public static void main(String[] args) {
        List<String> strs = Arrays.asList("One","Two","Three","Four");

        Consumer<String> upperCaseConsumer = s -> strs.add(s.toUpperCase());
        Consumer<String> printConsumer = s -> System.out.println(s);

        strs.forEach(upperCaseConsumer);
        strs.forEach(printConsumer);
}

【问题讨论】:

    标签: java


    【解决方案1】:

    Arrays.asList("One","Two","Three","Four") 返回由数组支持的常量大小List,因此您无法向其中添加元素。

    使用

    List<String> strs = new ArrayList<>(Arrays.asList("One","Two","Three","Four")); 
    

    改为。

    【讨论】:

    • 通过执行列表 strs = Arrays.asList("One","Two","Three","Four"); System.out.println(strs.getClass().getSimpleName());它给了我类名 ArrayList 并通过执行 List strs = new ArrayList(Arrays.asList("One","Two","Three","Four")); System.out.println(strs.getClass().getSimpleName());它还给了我 ArrayList 所以无论我是通过 asList 还是使用 new 创建 arraylist 有什么不同?
    • @RBS 不是同一个ArrayList。前者是java.util.Arrays$ArrayList,后者是java.util.ArrayList
    • 谢谢,我需要详细了解它。
    猜你喜欢
    • 2017-09-29
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2017-09-28
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多