递归流 API

Recursive Streaming API

我目前正在研究一个小型图论算法,它使用递归深度优先搜索。
由于它是递归的,我问自己,我是否应该使用 Stream API 来执行这样的任务或使用 Iterators 并为每个 Loops.
这是我的代码:

private void processNext(Node node) {
//METHOD A
    for (Node neighbour : node) {
        if (!connectedNodes.contains(neighbour)) {
            connectedNodes.add(neighbour);
            processNext(neighbour);
        }
    }
//OR METHOD B
    node.getNodes().stream().filter(not(connectedNodes::contains)).forEach(e -> {
        connectedNodes.add(e);
        processNext(e);
    });
//OR METHOD C
    node.getNodes().stream().forEach(e -> {
        if (!connectedNodes.contains(e)) {
            connectedNodes.add(e);
            processNext(e);
        }
    });
}

方法 A 和 C 将 100% 正常工作,但我不确定方法 B...
streaming API中的filter方法是在foreach之前还是while foreach中过滤掉不匹配的对象? (B和C完全一样吗?)

哪种方法最快?

感谢任何帮助!

OK 方法 B 和 C 完全一样! 不确定迭代器方式是否更快,但由于 B 需要更少 space,我选择那个!