java - 在 Java 8 中测试 Lambda

标签 java lambda java-8 java-stream

我正在摆弄 Java 8 lambda,我试图执行以下操作,但显然我做了一些非常错误的事情。我有一个字符串数组 String [] q我试图调用一个返回一组 Node 的静态方法数组中每个元素的对象。 这是我写的:

Set<Set<Node>> sets = Arrays.asList(q).stream().forEach(InMemoryGraph::getAllPredicates);

getAllPredicates是一个接受 String 作为参数并返回 Set<Node> 的方法。 我需要使用 java.util.function ?任何建议表示赞赏。

最佳答案

所以:

  • 您有一个要流式传输的数组:Arrays.stream(q)
  • 然后你想将每个字符串映射到一组节点:.map(InMemoryGraph::getAllPredicates)
  • 并将这些集合收集到一个集合中:.collect(toSet());

一口气:

Set<Set<Node>> sets = Arrays.stream(q) //a Stream<String>
                       .map(InMemoryGraph::getAllPredicates) // a Stream<Set<Node>>
                       .collect(toSet()); // a Set<Set<Node>>

注意:您需要静态导入 Collectors.toSet

关于java - 在 Java 8 中测试 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188948/

相关文章:

java 8 流 groupBy 和新对象创建

java - 使用 lambda 获取该对象的 ArrayList 中对象中所有字符串的长度总和

java - Java 8中列表的二级过滤

Java 8 - 流 - 收集时更新值

java - KeyListener 不触发操作

java - Jackson,基于另一个属性(依赖属性)反序列化属性

c# - Azure 服务总线序列化问题 [C#/JAVA]

c# - 是 Linq 还是 Lambda?

java - 如何使用java中可选对象的参数调用方法

java - 找不到符号方法 getOutputStream()