【问题标题】:Do two checks on just one stream and filter [duplicate]仅对一个流进行两次检查并过滤[重复]
【发布时间】:2020-03-25 20:30:38
【问题描述】:

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

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

具有空 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());
}

【问题讨论】:

    标签: java lambda java-stream


    【解决方案1】:

    使用分区方式

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      • 2018-05-26
      • 2021-12-17
      • 2020-03-02
      • 2014-09-12
      • 1970-01-01
      相关资源
      最近更新 更多