java - 如果在 for-each-loop 内进行 Stream

标签 java java-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 比较陌生。这是否可能或有用?

最佳答案

你走在正确的道路上。第一次调用stream()然后filter 然后然后 findFirst() 然后 Optional<T>.get() 。就像,

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

关于java - 如果在 for-each-loop 内进行 Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60404032/

相关文章:

Java:Group By 然后 Map

java - 如何使用lambda来收集java8中多个列表中具有相同索引的元素

Java 8 流 - 在平面图之后引用原始流对象

java:将java类文件复制到自定义包[版权问题?]

java - 长数删除第一位 - Fast Way JAVA

java - 在 JAX-RS 客户端中读取 Map 实体

java-8 - 流操作返回一个对象而不是一个列表

java - 自守数 - Java 程序

java - Spring 数据jpa : Error creating bean with name 'entityManagerFactory'

java - 为什么不推荐基于 AtomicInteger 的 Stream 解决方案?