java - RemoveIf 产生异常,为什么?

标签 java lambda predicate

<分区>

我尝试使用 lambda 表达式从列表中删除一个项目,但 removeIf 生成异常,为什么?

在这个 Orlacle 视频 jdk8 8 MOOC 中介绍了带有列表而不是数组列表的 removeif。这样对吗 ? https://youtu.be/olKF7VpJMfg?list=PLMod1hYiIvSZL1xclvHcsV2dMiminf19x&t=137

public static void main(String[] args){
        List<String> parole = Arrays.asList("Lambda ", "expressions ", "are ", "cool ");
Predicate <String> findAre= s->"are ".equals(s);         
        parole.removeIf(findAre);
        parole.forEach( System.out::println);
            }

Here pict with code and Exception in thread "main"

最佳答案

Arrays.asList 生成一个由数组支持的固定大小的列表,因此您不能在其中添加或删除元素。

您可以创建一个ArrayList 以支持删除:

List<String> parole = new ArrayList<>(Arrays.asList("Lambda ", "expressions ", "are ", "cool "));

关于java - RemoveIf 产生异常,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43513952/

相关文章:

java - 自定义 Java JTree 实现

linq - PredicateBuilder无法转换为IQueryable吗?

c# - 可以从不同对象集返回的谓词或动态 Linq?

java - 如何设置线程超时

java - Spring Batch : Could not increment identity; nested exception is com. microsoft.sqlserver.jdbc.SQLServerException : Invalid object name 'BATCH_JOB_SEQ' ?

java - 如何从标签列表获取对象属性到 JavaScript 变量?

c# - 带有 while (true) 的特殊重载决议

java - 我无法理解 Java 8 中的一些 lambda 表达式

Python使用ndarray中的每个元素作为lambda函数的参数

java - 有没有办法找到匹配谓词的第一个元素?