首页 > 解决方案 > 如果在 for-each-loop 到 Stream

问题描述

我正在尝试将以下代码放入流中:

            for (Engine engine : engines) {
                if (engine.getId().equals(rollingStockId)) {
                    return engine;
                }
            }
            for (TrainSet trainSet : trainSets) {
                if (trainSet.getId().equals(rollingStockId)) {
                    return trainSet;
                }
            }
            throw new LogicException("there is no train-set or engine with ID "+ rollingStockId);

我已经尝试过return engines.stream().filter(engine -> engine.getId().equals(rollingStockId);和其他一些变化,但它们都不起作用。我对 Stream API 比较陌生。这甚至可能或有用吗?

标签: javajava-stream

解决方案


你在正确的轨道上。先调用stream()然后filter findFirst()调用Optional<T>.get()。喜欢,

return engines.stream()
        .filter(engine -> engine.getId().equals(rollingStockId))
        .findFirst()
        .get(); // <-- but better to return the Optional type.

推荐阅读