我在处理流时遇到了一些麻烦。本质上,我有一个Map
public static synchronized List<Node> getNodes() {
List<Node> nodes = new ArrayList<>();
Collection<Bucket> bucketCollection = buckets.values();
for (Bucket b : bucketCollection) {
for (Node n : b.getNodes()) {
nodes.add(n);
}
}
return nodes;
}
这就是工作和做它应该做的事情。然而,我在使用流重写这个函数时遇到了一些问题。我尝试了以下代码,但它不起作用,因为它返回了一个
列表
public static synchronized List<Node> getNodes() {
return buckets.values().stream()
.map(Bucket::getNodes)
.collect(Collectors.toList());
}
话虽如此,在地图之后,我有一个
流
map
将一个“thingie”变成另一个“thingie”。一件事变成了一件事。这不是你想要的;你想让一件事情变成0到很多事情。你正在寻找的方法是flatMap。
return buckets.values().stream()
.map(Bucket::getNodes)
.flatMap(Set::stream)
.collect(Collectors.toList())
;
我有一个int的二维数组,还有一个方法,它的参数指向它的一行。我想在该行中非零的元素上返回一个Set,并且不需要for循环。这就是我所尝试的: 不幸的是,我遇到了一个编译时错误,有点难以解析: 有什么想法吗?
本文向大家介绍Java将可选流转换为值流,包括了Java将可选流转换为值流的使用技巧和注意事项,需要的朋友参考一下 示例 您可能需要一个转换Stream发射Optional到一个Stream值,从现有的发射只值Optional。(即:没有null价值,不与之打交道)。Optional.empty()
所以我想做的就是打印出字符,而不是ascii值。。。 这是输出: 有人知道怎么解决这个问题吗?
我有一个,我希望将其转换为。在Java8之前,我会通过循环,将每个转换为并将其添加到新的,如下所示。
我刚刚补充道 对这个项目。我有<code>suspend fun foo():Flow 我需要获得
我要将转换为: 如果可选选项包含值,则流包含该值。 如果可选项不包含值,则流应为空。