我有一个Stream,可以在peek()方法中进行所有处理。我不需要Stream的任何结果,但是我需要执行终端操作才能进行处理。当然,我可以使用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/

10-11 22:15
查看更多