为什么流执行时执行顺序无关紧要?

问题描述

我在以下示例中所做的是切换 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...