Java 只对一个流执行两次检查并筛选

Java 只对一个流执行两次检查并筛选,java,lambda,java-stream,Java,Lambda,Java Stream,我需要检查类的Id变量是否为null。如果为空,我必须将其插入一个列表,如果不是空,我必须将其插入另一个列表。我是这样做的: 我不想要两条流,我只想做一条流和过滤,你能帮我吗 ID为空的电子邮件将保留在数据库中 List<Email> emails = payment.getUser().getEmails(); if (!emails.isEmpty()){ List<Email> create = emails.stream().filter(email -

我需要检查类的Id变量是否为null。如果为空,我必须将其插入一个列表,如果不是空,我必须将其插入另一个列表。我是这样做的:

我不想要两条流,我只想做一条流和过滤,你能帮我吗

ID为空的电子邮件将保留在数据库中

List<Email> emails = payment.getUser().getEmails();

if (!emails.isEmpty()){
    List<Email> create = emails.stream().filter(email -> email.getId() == null).collect(Collectors.toList());
    List<Email> existingEmails = emails.stream().filter(email -> email.getId() != null).collect(Collectors.toList());
}
List emails=payment.getUser().getEmails();
如果(!emails.isEmpty()){
List create=emails.stream().filter(email->email.getId()==null).collect(Collectors.toList());
列出现有电子邮件=emails.stream().filter(email->email.getId()!=null).collect(collector.toList());
}
使用分区依据

List<Email> emails = payment.getUser().getEmails();
Map<Boolean, List<Email>> result = emails.stream().collect(Collectors.partitioningBy(email -> email.getId() == null));

List<Email> create = result.get(true);
List<Email> existingEmails = result.get(false);
List emails=payment.getUser().getEmails();
Map result=emails.stream().collect(Collectors.partitionby(email->email.getId()==null));
List create=result.get(true);
列出现有电子邮件=result.get(false);