java - 如果我不需要终止的任何值(value),我该如何终止流?

标签 java java-stream

我有一个 Stream,它在 peek() 方法中进行所有处理。我不需要流的任何结果,但我需要终端操作才能进行处理。当然,我可以使用 count()(或任何其他操作)终止 Stream,但这会产生误导,好像我需要 Stream 终止的一些结果。在这种情况下终止 Stream 的正确方法是什么?

引用代码如下:

Stream<Collection<NetworkPart>> graphHolders = cutSegment.stream()
    .map(this::obtainCollectionFor);
for (NetworkPart part : edgesToNetworkParts.get(originalSegment)) {
    part.integrate(cutSegment);
    graphHolders = graphHolders.peek(gh -> gh.add(part));
}
graphHolders.count(); // Just to terminate

最佳答案

这就是我重写问题代码的方式:

Collection<NetworkPart> partsOwningEdge = edgesToNetworkParts.get(originalSegment);
partsOwningEdge.forEach(part -> part.integrate(cutSegment));
cutSegment.stream()
    .map(this::obtainCollectionFor)
    .forEach(gh -> gh.addAll(partsOwningEdge));

关于java - 如果我不需要终止的任何值(value),我该如何终止流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564066/

相关文章:

java - Java中的父类(super class)和子类

Java 8 - 如何将多个字段汇总到一个 dto 中?

java - SelectorImpl 被阻塞

java - 这是 MVC DAO 的正确方法吗?我收到类似 Autowiring 依赖项注入(inject)失败的错误

Java 8 HashMap

java - 在迭代 ConcurrentHashMap 时添加和删除值

Java Stream 接口(interface)映射函数参数类型

java - 如何使用 Java Streams API 将 Map 列表与 Lists 值合并?

java - 等待/锁定/无阻塞和OOC方法示例

java - Android 的 USB 设备