如何使用流代替for循环

问题描述 投票:0回答:2

我想使用Stream而不是for循环编写以下代码

private Car getCar(String CarRef, List<Car> cars) {
    for (Car car : cars) {
        if (carRef.equals(car.getName())) {
            return car;
        }
    }
    return null;
}
java-8 functional-programming stream java-stream
2个回答
2
投票
cars.streem() .filter(c -> carRef.equals(c.getName())) .findFirst();

[从集合中取出蒸汽。使用您需要的条件进行过滤(您可以创建布尔方法,是否要进行过滤)。并获取与此条件匹配的第一个值。

如果要

所有汽车符合条件,请使用:

.collect(Collectors.toList());
而不是findFirst()

1
投票
findFirst()返回一个可选的,因此确切的解决方案是:

return cars.stream() .filter(car -> carRef.equals(car.getName())) // keep only matching elements .findFirst() // when 1st element matches, it triggers return .or(null); // If not element, return null

© www.soinside.com 2019 - 2024. All rights reserved.