我真的很好奇这个简单的性能/最佳使用/最佳实践相关案例场景:
如果我有这个简单的片段:
List<String> list = Arrays.asList("Hello1", "Hello2", "Hello3", "Jhon", "Doe", "Hello4");
list.stream()
.map(s -> {
if (s.contains("Hello")) {
return "World";
}
return null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
或
list.stream()
.flatMap(s -> {
if (s.contains("Hello")) {
Stream.of("World");
}
return Stream.empty();
})
.collect(Collectors.toList());
注:我知道也许Map String
只是把它转换成另一个 String
这没有多大意义,但这只是出于示例表示的目的,它可以是pojo或整数或其他任何形式。
哪一个表现更好?或者哪一个是最好的选择?
我试图理解在使用流链时,在逻辑中出现一些条件的情况下,哪个是更好的选择。
谢谢您。
1条答案
按热度按时间vxqlmq5t1#
我不会像其他人那样创造和 Package
Stream
用于避免空值,也不返回null
对于不匹配的字符串,可以简单地筛选Hello
单词然后使用map
用于值修改