3 回答
TA贡献1848条经验 获得超10个赞
您当前的代码在没有流的情况下要好得多,并且可以进一步缩短为:
if (!cats.isEmpty()) {
logger.info("Processing for cats: " + cats.size());
}
cats.forEach(Cat::giveFood); // Assuming giveFood is a stateless operation
TA贡献1842条经验 获得超21个赞
我不确定为什么要在当前循环解决方案中使用流,但您也可以使用Stream<List<Cat>>:
Stream.of(petStore.getCatsForSale())
.filter(cats -> !cats.isEmpty())
.flatMap(cats -> {
logger.info("Processing for cats: " + cats.size());
return cats.stream();
})
.forEach(Cat::giveFood);
也许是优化:
Stream.of(petStore.getCatsForSale())
.filter(cats -> !cats.isEmpty())
.peek(cats -> logger.info("Processing for cats: " + cats.size()))
.flatMap(Collection::stream)
.forEach(Cat::giveFood);
或使用其他变体:
Stream.of(petStore.getCatsForSale())
.filter(cats -> !cats.isEmpty())
.mapToInt(cats -> {
cats.forEach(Cat::giveFood);
return cats.size();
})
.findAny()
.ifPresent(count -> logger.info("Processing for cats: " + count));
TA贡献1770条经验 获得超3个赞
cats.stream() .peek(Cat::giveFood) .findAny().ifPresent(cat -> logger.info("Processing for cats: " + cats.size()));
添加回答
举报