有一个 Car 表包含另一个 Door 表,您需要找到具有特定门的合适汽车,我制作了门的 flatMap 并根据门的条件对其进行过滤。
List<Car> list = new ArrayList<>();
list.stream()
.map(Car::doors)
.flatMap(Collection::stream)
.filter(c -> c.getCode().equals(codeParam))
.filter(c -> c.getCode().equals(codeParam))// Другие условия
.filter(c -> c.getCode().equals(codeParam))// Другие условия
.max(this::compareDoors)
.orElse(null);//вот здесь хотелось бы вернуть Car, но вернуть можно только Door
您可以添加另一个流,它已经被 Car.doors 中的 Door 元素的内容过滤,或者不使用 map 和 flatmap,并添加一个长条件来过滤,其中将再次有另一个流。
但是是否有可能在没有额外流的情况下返回 Car 或者以某种方式使用 StreamEx 库(我没有在库中找到这样做的方法)?
您可以将流创建实现传递给 Stream.flatMap 并返回一个 Stream。您还可以在同一个 flatMapa 实现中添加过滤。