removeIf() 方法。从列表中删除所有元素
removeIf() method. removes all the elements from the 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
并从副本中删除元素:
List<Person> copy = new ArrayList<>(list);
copy.removeIf(p -> p.getPid() < 3);
方法只能调用一次:
无中间变量
list.removeIf(p -> p.getPid() < 3);
带中间变量
Predicate<Person> predicate = p-> p.getPid() < 3;
list.removeIf(predicate);
以下是您可以使用 Project Reactor 执行的操作:
Flux.from(list).filter(a -> a.getId() > 3).collectList(); //retuns Mono<List<User>>
我有一个用户列表,我想从列表中删除 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
并从副本中删除元素:
List<Person> copy = new ArrayList<>(list);
copy.removeIf(p -> p.getPid() < 3);
方法只能调用一次:
无中间变量
list.removeIf(p -> p.getPid() < 3);
带中间变量
Predicate<Person> predicate = p-> p.getPid() < 3; list.removeIf(predicate);
以下是您可以使用 Project Reactor 执行的操作:
Flux.from(list).filter(a -> a.getId() > 3).collectList(); //retuns Mono<List<User>>