Java中List.of创建的列表调用removeAll报错的原因排查
问题原因分析
核心问题在于你用List.of(1,2,3,4)创建的a1temp是不可变列表,这类列表不支持任何修改操作,包括removeAll()。
- Java 9及以上的
List.of()方法,返回的是JDK内部实现的不可变List实例(比如ImmutableCollections.ListN)。这种列表是只读设计,所有涉及添加、删除元素的结构修改方法,都会直接抛出UnsupportedOperationException。 - 你调用的
removeAll()属于修改列表结构的操作,自然触发了该异常,控制台的“Can't delete”就是对这个异常的捕获提示。
如果要实现删除重复元素的需求,需要把不可变列表转换为可变的List实现类(比如ArrayList),代码示例如下:
// 将不可变列表包装进ArrayList,得到可变列表 List<Integer> a1temp = new ArrayList<>(List.of(1,2,3,4)); // 此时调用removeAll()即可正常执行 a1temp.removeAll(GA);
内容的提问来源于stack exchange,提问作者Arolar Tuvore
相关产品推荐
相关产品推荐

