gpt4 book ai didi

java - 如何在功能上处理拆分流

转载 作者:行者123 更新时间:2023-11-29 06:27:55 24 4
gpt4 key购买 nike

给定以下代码,我如何将其简化为一条功能线?

    // DELETE CSV TEMP FILES
final Map<Boolean, List<File>> deleteResults = Stream.of(tmpDir.listFiles())
.filter(tempFile -> tempFile.getName().endsWith(".csv"))
.collect(Collectors.partitioningBy(File::delete));

// LOG SUCCESSES AND FAILURES
deleteResults.entrySet().forEach(entry -> {
if (entry.getKey() && !entry.getValue().isEmpty()) {
LOGGER.debug("deleted temporary files, {}",
entry.getValue().stream().map(File::getAbsolutePath).collect(Collectors.joining(",")));
} else if (!entry.getValue().isEmpty()) {
LOGGER.debug("failed to delete temporary files, {}",
entry.getValue().stream().map(File::getAbsolutePath).collect(Collectors.joining(",")));
}
});

这是我遇到的一种常见模式,我有一个流,我想过滤这个流,根据那个过滤器创建两个流,然后我可以对流 A 做一件事,对流 A 做另一件事流 B。这是一种反模式,还是以某种方式支持它?

最佳答案

如果您特别不希望显式变量引用临时映射,那么您可以将操作链接起来:

.collect(Collectors.partitioningBy(File::delete))
.forEach((del, files) -> {
if (del) {
LOGGER.debug(... files.stream()...);
} else {
LOGGER.debug(... files.stream()...);
});

关于java - 如何在功能上处理拆分流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com