gpt4 book ai didi

包含的 Java 8 过滤器

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:39:20 25 4
gpt4 key购买 nike

我是 Java 8 的新手,当我试图为所有包含一个字母的城市设置过滤器时。它对我不起作用。但是,当我使用旧方法运行它时,它会起作用。

    List<String> cityList = new ArrayList<>();
cityList.add("Noida");
cityList.add("Gurgaon");
cityList.add("Denver");
cityList.add("London");
cityList.add("Utah");
cityList.add("New Delhi");

System.out.println(cityList);

/* Prior to Java 8 Approach */
for (String city : cityList) {
if(city.contains("a")){
System.out.println(city + " contains letter a");
}
}
/* Java 8 Approach */
System.out.println(Stream.of(cityList).filter(str -> str.contains("a")).collect(Collectors.toList()));

这是输出

Noida contains letter a
Gurgaon contains letter a
Utah contains letter a
[]

能否请您解释一下我哪里出错了。

提前致谢!

最佳答案

您需要使用 cityList.stream()而不是 Stream.of(cityList) .原因是目前,Stream.of(cityList)返回 Stream<List<String>>而你想要 Stream<String> .您仍然可以使用当前方法完成您的任务,但您需要展平 Stream<List<String>>进入Stream<String> (我不推荐,因为它会导致不必要的开销,因此最好使用 cityList.stream() )。

也就是说,您应该如何完成任务:

System.out.println(cityList.stream().filter(str -> str.contains("a")).collect(Collectors.toList()));

关于包含的 Java 8 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074861/

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