java – removeIf()方法.从List中删除所有元素

我有一个用户列表,我想从我的列表中删除id为<的用户3 其实我这样做:

[...]
int pid1 = 1;
int pid2 = 2;
int pid3 = 3;
Predicate<Person> personPredicate1 = p-> p.getPid() == pid1;
Predicate<Person> personPredicate2 = p-> p.getPid() == pid2;
Predicate<Person> personPredicate3 = p-> p.getPid() == pid3;
list.removeIf(personPredicate1);
list.removeIf(personPredicate2);
list.removeIf(personPredicate3);
[...]

我想我不使用正确的方法?

解决方法:

使用单个removeIf:

list.removeIf(p -> p.getPid() < 3);

编辑:

根据您发布的错误,您尝试从不可变集合中删除元素,这是不可能的.

您可以创建原始列表的副本并从副本中删除元素:

List<Person> copy = new ArrayList<>(list);
copy.removeIf(p -> p.getPid() < 3);
上一篇:c# – 根据Predicate清除List的最可靠方法


下一篇:c – 如何在一元谓词中使用类成员变量?