java 8 流对类别中的第一个项目执行 Operation1,然后对类别中的所有项目执行 Operation2

标签 java java-stream

给定一个类别列表以及类别中包含的项目列表

//Just example of structure:
List<Category> categories = getCategories();
List<Item> items = category.getItems();

使用 Java 流式 API 如何对类别中的第一个子项执行 Operation1(),然后对类别中的所有项执行 Operation2()?

我想用最干净的代码来做。所以我尝试在一个流中完成它,或者最好的方法是什么?

最佳答案

如果你坚持这样做,这就可以了:

List<Category> categories = getCategories();

categories.forEach(category -> {
    List<Item> items = category.getItems();
    IntStream.range(0, items.size()).forEach(i -> {
                Item item = items.get(i);
                if (i == 0)
                    operation1(item);
                operation2(item);
            }
    );
});

但是,为了提高可读性,我强烈建议只获取第一个元素(如果存在)并对其执行操作 1,然后遍历其余元素(无论是否通过流)。

就是说,如果您实际上没有列表作为开始,而是拥有真正的流式和非阻塞代码,那么这种方法有话要说。这也是为什么我没有在类别的 .forEach 之前添加 .stream() 的原因,您是从列表开始的。

关于java 8 流对类别中的第一个项目执行 Operation1,然后对类别中的所有项目执行 Operation2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206676/

相关文章:

java - 将DTO的接口(interface)传递给DAO可以吗

java - Nimbus 的 Matlab 外观和感觉

java - FreeMarker - 读取包含的文件时出错 "./common/header.txt":

java - Java中的有限生成流-如何创建一个?

Java.Lang.Object,无法转换为 Backed.Bean

java - 使用 TCP 的 Ehcache Jgroups 复制在具有 2 节点集群的 AWS 云中不起作用

java - Grouping 类型未定义方法 flatMapping((<no type> dish) -> {}, toSet())

Java 8 Stream/Collectors 映射键与 Collectors.counting()

java - 将 HashMap 的键和值组合成 Set

java - 将具有类似映射结构文本的文件转换为实际的 HashMap