我正在摆弄 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/