StreamApi
使用
map/flatMap
map
map,它的作用就是把inputStream的每个元素映射成outputStream的另外一个元素
map生成的是个1:1映射
1 | List<Integer> nums = Arrays.asList(1, 2, 3, 4); |
flatMap
flatMap把inputStream中的层级结构 扁平化,就是将最底层元素抽出来放到一起,最终output的新Stream里面已经没有List了,都是直接的数字
1 | Stream<List<Integer>> inputStream = Stream.of( |
filter
filter对原始Stream进行某项测试,通过测试的元素被留下来生成一个新Stream。
1 | // 留下偶数 |
forEach
循环,terminal操作
1 | umsAdmins.stream().filter(n -> n.getStatus() == 1).forEach(n -> System.out.println(n.getUsername())); |
forEach是terminal操作。因此,它执行后,Stream 的元素就被“消费”掉了,你无法对一个Stream进行两次terminal运算。下面的代码是错误的
1 | stream.forEach(element -> doOneThing(element)); |
findFirst
这是一个termimal兼short-circuiting操作,它总是返回Stream的第一个元素或者空。
1 | Stream<UmsAdmin> stream = umsAdmins.stream(); |
findFirst 返回的是Optional
引用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Code Wolf!
评论

