Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java removeIf()方法。从列表中删除所有元素_Java_Predicate - Fatal编程技术网

Java removeIf()方法。从列表中删除所有元素

Java removeIf()方法。从列表中删除所有元素,java,predicate,Java,Predicate,我有一个用户列表,我想从列表中删除idp.getPid()==pid1; 谓词personPredicate2=p->p.getPid()==pid2; 谓词personPredicate3=p->p.getPid()==pid3; list.removeIf(personPredicate1); list.removeIf(personPredicate2); list.removeIf(personPredicate3); [...] 我认为我没有使用正确的方法?使用单个移除 list.r

我有一个用户列表,我想从列表中删除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);
[...]
[…]
int-pid1=1;
int-pid2=2;
int-pid3=3;
谓词personPredicate1=p->p.getPid()==pid1;
谓词personPredicate2=p->p.getPid()==pid2;
谓词personPredicate3=p->p.getPid()==pid3;
list.removeIf(personPredicate1);
list.removeIf(personPredicate2);
list.removeIf(personPredicate3);
[...]

我认为我没有使用正确的方法?

使用单个
移除

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

您只能调用该方法一次:

  • 无中间变量

    list.removeIf(p -> p.getPid() < 3);
    
    Predicate<Person> predicate = p-> p.getPid() < 3;
    list.removeIf(predicate);
    
    list.removeIf(p->p.getPid()<3);
    
  • 带中间变量

    list.removeIf(p -> p.getPid() < 3);
    
    Predicate<Person> predicate = p-> p.getPid() < 3;
    list.removeIf(predicate);
    
    谓词=p->p.getPid()<3;
    list.removif(谓词);
    

以下是使用Project Reactor可以做的事情:

Flux.from(list).filter(a -> a.getId() > 3).collectList();  //retuns Mono<List<User>>
Flux.from(list).filter(a->a.getId()>3.collectList()//单声道复述

我有一个错误:
2019-01-07 11:54:09.931错误171920---[XNIO-4 task-3]o.z.problem.spring.common.AdviceTrait:未实现java.lang.UnsupportedOperationException:java.util.Collections$UnmodifiableCollection.removeIf(Collections.java:1084)
@Mercer您正试图从不可修改的集合中删除元素,这就是它失败的原因。或者直接从不可修改的集合中创建流,然后使用
过滤器
list.stream().filter(p->p.getPid()>=3.collect(toList())您是如何创建列表的?共享代码行,或者您可以使用已经是标准库的一部分的内容
list.stream().filter(p->p.getPid()>=3.collect(toList())