gpt4 book ai didi

Java Streams - 嵌套流的映射方法无法按预期工作

转载 作者:行者123 更新时间:2023-12-02 01:49:14 25 4
gpt4 key购买 nike

我有下面的代码,我希望 finalList 能够填充内部流的过滤操作的结果,但它不会打印任何内容。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainClass {

public static void main(String[] args) {
ArrayList<String> finalList = new ArrayList<>();
ArrayList<String> l = new ArrayList<>();
l.add("c");
l.add("e");

ArrayList<String> l1 = new ArrayList<>();
l1.add("a");
l1.add("b");

Map<String, Integer> map1 = new HashMap<>();
map1.put("a-c", 1);
map1.put("b-d", 2);

l1.stream()
.map(c-> {
System.out.println("inside map" + c);
l.stream().filter(s ->
map1.containsKey(c+"-"+s)).forEach(f-> {

System.out.println("f value is" + f);
finalList.add(f);
});
return null;
});


System.out.println("Final List is:" + finalList);

}
}

我在 map 方法中没有看到任何系统输出。请帮助我理解为什么这不执行任何代码?

我得到的输出是:

Final List is:[]

最佳答案

您需要使用for-each而不是mapmap 返回 Stream,除非您对流执行终端操作,否则您不会获得输出。

用途:

    l1.stream().forEach(c -> {
System.out.println("inside map" + c);
l.stream().filter(s -> map1.containsKey(c + "-" + s)).forEach(f -> {

System.out.println("f value is" + f);
finalList.add(f);
});
});

关于Java Streams - 嵌套流的映射方法无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com