为啥进程列表时抛出 java.lang.UnsupportedOperationException [重复]

Posted

技术标签:

【中文标题】为啥进程列表时抛出 java.lang.UnsupportedOperationException [重复]【英文标题】: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);

【问题讨论】:

【参考方案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 谢谢,我需要详细了解它。

以上是关于为啥进程列表时抛出 java.lang.UnsupportedOperationException [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥mysql PDO不会在失败时抛出错误[重复]

为啥 SQL Server 在将 int 转换为数据类型 numeric 时抛出算术溢出错误?

为啥它在运行迁移时抛出`GeoDjango Postgis 要求不满足得到错误?

为啥在读取数据库 hsqldb 中的 blob 时抛出 java.lang.IndexOutOfBoundsException

为啥grails在第一次访问hasMany关系时抛出空指针异常?

IE9 在 iframe 中加载脚本时抛出异常。为啥?