Java 我可以在流中为列表链接空检查吗

Java 我可以在流中为列表链接空检查吗,java,Java,Java新手。我试图通过使用流在列表中查找值,但在提取值之前,我需要检查列表是否为null,我正在寻找如何在流中链接该值。以下是我当前的代码: for (Record currRec : records) { notedRec = masterRecs.stream().filter(rec -> rec.getId().equals(currRec.getId())) .collect(Collectors.toList()).get(0)

Java新手。我试图通过使用流在列表中查找值,但在提取值之前,我需要检查列表是否为null,我正在寻找如何在流中链接该值。以下是我当前的代码:

for (Record currRec : records) {
        notedRec = masterRecs.stream().filter(rec -> rec.getId().equals(currRec.getId()))
                .collect(Collectors.toList()).get(0);
}
如果.collect()返回null,则此代码将失败,因为我试图在可能为null的列表上获取.get(0)。我现在正在尝试这种方法,但它似乎很旧,我正在寻找更优雅的东西:

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()之后链接空检查,但我找不到任何关于如何执行该操作的信息。谢谢你的建议

您正在寻找
findFirst
orelsetrow

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

您正在查找
findFirst
orelsetrow

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

这种方法不需要我调用.collect(collector.toList()),因为它已经完成了获取第一个元素的工作。
collect(collector.toList())
正在收集满足筛选条件的所有元素,
findFirst
将通过终止stream@fumeng的其余部分来为您提供第一个匹配元素,我觉得这就是您所需要的。这种方法消除了我调用.collect(Collectors.toList())的需要,因为它已经完成了获取第一个元素的工作。
collect(Collectors.toList())
正在收集满足筛选条件的所有元素,
findFirst
将通过终止流@fumeng的其余部分为您提供第一个匹配元素,我觉得这就是您需要的