Java 8 Stream 如何还原为集合

由于 Java 对集合的函数式操作并非原生态的,必须对得到的 stream() 进行过滤等操作,之后还是一个 stream(),一般我们最后返回给调用者需还原为相应的集合。这无法与 Scala 的 for ... yield 操作相比。例如下面在使用 Stream API 过滤获得所有大于 3 的数字之后,方法的返回值还应该还原为 List<Integer>, 这个需求非常自然

我们这儿的问题就是如何把上面的 streamOfInteger 转换为 List<Integer>, 有以下几种办法

1 使用 Collectors.toList 方法 ***

2 使用 toCollection() 方法 **

3 forEach() 方法 *

需要借助于临时变量,不带为 Functional 接受

4. toArray() 方法

此法更觉多此一举

此外,不妨窥探下使用 Stream API 处理后的 Map 该如何还原为 Map

如果我们根本用不着对原有的 key/value 作进一步加工处理,只是应用原始的 key/value 生成新的 Map,那么我们可以自定义一个通用的 Collector. 这是功课,且到用时再思考。

 

参考: 1. 5 ways to Convert Java 8 Stream to List - Example, Tutorial

类别: Java/JEE, Java8. 标签: . 阅读(121). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar
wpDiscuz