给定一个类别列表以及类别中包含的项目列表
//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/