I just started learning Java streams and faced a problem. Please take a look at a the following example. This is part of a Node class:
private Map<String, Node> nodes;
public Optional<Node> child(String name) {
return Optional.<Node>ofNullable(nodes.get(name));
}
private void findChildren(String name, List<Node> result) {
child(name).ifPresent(result::add);
nodes.values().stream()
// .map(Node::findChildren(name, result))
// .forEach(Node::findChildren(name, result))
.forEach(node -> node.findChildren(name, result));
}
My intent was to call #findChildren with the name and result parameters on each node in the stream. I tried to use the method references Node::findChildren with no luck. I'd appreciate solutions other the the one with ->
operator.
Is it somehow possible to use the method reference together with a parameter? I like the idea of streams and I just want to make the code more readable.
Actually, I think there is a similar question Method references with a parameter which I read but cannot figure out how to use the bind2 method in my code. Is it the only solution?
See Question&Answers more detail:os