我互换了地图和过滤器的位置。它与代码完成的迭代次数有什么不同吗?
List<String> Aname3 =names.stream()
.map(name->name.toUpperCase())
.filter(name->name.startsWith("A"))
.collect(Collectors.toList());
List<String> Aname4 =names.stream()
.filter(name->!name.startsWith("A"))
.map(name->name.toLowerCase())
.collect(Collectors.toList());
答案 0 :(得分:0)
过滤可能会过滤掉一些元素,因此映射到大写将在更少的元素上完成。所以,是的。最好先过滤。
答案 1 :(得分:0)
首先,这两个流管道具有不同的逻辑,将产生不同的输出。即使filter
和map
调用都接收到与输入相同的功能接口,但两个管道的结果可能仍然不同,因为map
更改了Stream
的元素以可能影响filter
结果的方式,map
和filter
的顺序会影响输出。
对于迭代次数,首先应用filter
意味着map
仅适用于通过过滤器的元素。
另一方面,首先应用map
意味着它将应用于Stream
中的所有元素。
因此,第二个流管道将执行较少的操作(假设并非所有元素都通过了过滤器)。