相关疑难解决方法(0)

使用带参数的方法引用

我刚开始学习Java流并遇到了问题.请看下面的例子.这是Node类的一部分:

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));
}
Run Code Online (Sandbox Code Playgroud)

我的目的是使用流中每个节点上的名称和结果参数调用#findChildren.我试图使用方法引用Node :: findChildren没有运气.我很欣赏其他与->运营商合作的解决方案.

是否有可能将方法引用与参数一起使用?我喜欢流的想法,我只想让代码更具可读性.

实际上,我认为有一个类似的问题方法引用与我读过的参数,但无法弄清楚如何在我的代码中使用bind2方法.这是唯一的解决方案吗?

java lambda java-stream functional-interface method-reference

35
推荐指数
1
解决办法
3万
查看次数

有没有像"(k,v)"那样流式传输地图而不是使用(条目)?

基本上我寻找一种避免使用的方法

entry -> entry.getValue
Run Code Online (Sandbox Code Playgroud)

entry -> entry.getKey
Run Code Online (Sandbox Code Playgroud)

类似于什么Map.forEach().

如果我能找到一种工作方式map.stream().filter((k,v) -> )......等等

看起来这个界面叫做BiConsumer.或许转换为BiConsumer转换器或Stream.generate()

java collections lambda java-8 java-stream

12
推荐指数
3
解决办法
5651
查看次数