首页 > 解决方案 > 我可以在 List 的流中链接空检查吗

问题描述

Java新手。我正在尝试通过使用流在列表中查找值 - 但我需要在提取值之前检查列表是否为空,并且我正在寻找如何在流中链接它。这是我当前的代码:

for (Record currRec : records) {
        notedRec = masterRecs.stream().filter(rec -> rec.getId().equals(currRec.getId()))
                .collect(Collectors.toList()).get(0);
}

如果.collect()返回 null,则此代码将失败,因为我正在尝试.get(0)可能为 null 的列表。我现在正在尝试这种方法,但它看起来很旧并且正在寻找更优雅的东西:

for (Record currRec : records) {
recList = masterRecs.stream().filter(rec -> rec.getId().equals(currRec.getId()))
                .collect(Collectors.toList());

        if(recList.size() > 0) {
            notedRec = recList.get(0);
        }else {
            // throw warning that record wasn't found in List
        }
}

对我来说,似乎我可以在.collect()之后链接空检查,但我找不到任何关于如何做到这一点的信息。感谢您提供任何有用的提示。

标签: java

解决方案


您正在寻找findFirstorElseThrow

masterRecs.stream().filter(rec -> rec.getId().equals(currRec.getId()))
                   .findFirst().orElseThrow(//some exception);

推荐阅读