问题描述
我在以下示例中所做的是切换 map 和 limit 函数的顺序。我无法理解的是,为什么在第一种情况下,由于在 map 完成执行后调用了限制,Inside Map 只打印了 3 次?第一种情况应该打印 6 次。
List<String> names=Arrays.asList("Amanda","Akon","Anthony","Jack","John","Jill");
List<String> filteredNames3=names.stream().map((str)->{
System.out.println("Inside Map");
return str.substring(0,2);
}).limit(3).collect(Collectors.toList());
System.out.println("filteredNames3 "+filteredNames3);
List<String> filteredNames4=names.stream().limit(3).map((str)->{
System.out.println("Inside Map");
return str.substring(0,2);
}).collect(Collectors.toList());
System.out.println("filteredNames4 "+filteredNames4);
Output->
Inside Map
Inside Map
Inside Map
filteredNames3 [Am,Ak,An]
Inside Map
Inside Map
Inside Map
filteredNames4 [Am,An]
Edit- 在 skip 的情况下,Inside Map 被打印 6 次。
List<String>names=Arrays.asList("Amar","Akbar","Jill");
List<String> filteredNames1=names.stream().map((str)->{
System.out.println("Inside Map");
return str.substring(0,2);
}).skip(2).collect(Collectors.toList());
System.out.println("filteredNames1 "+filteredNames1);
List<String> filteredNames2=names.stream().skip(2).map((str)->{
System.out.println("Inside Map");
return str.substring(0,2);
}).collect(Collectors.toList());
System.out.println("filteredNames2 "+filteredNames2);
Output-
Inside Map
Inside Map
Inside Map
Inside Map
Inside Map
Inside Map
filteredNames1 [An,Ja,Jo,Ji]
Inside Map
Inside Map
Inside Map
Inside Map
filteredNames2 [An,Ji]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)