前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java8 stream

java8 stream

作者头像
猿天地
发布2018-04-03 12:39:16
8830
发布2018-04-03 12:39:16
举报
文章被收录于专栏:猿天地猿天地

转载:猿天地 链接:http://cxytiandi.com/blog/detail/2220

Stream 作为 Java 8 的一大亮点,我个人是非常喜欢用的,用起来爽多了。

定义Stream

可以通过of来定义stream,也可以通过集合来转成stream。

代码语言:javascript
复制
Stream<String> stream = 
    Stream.of("java", "css", "php");
stream = Arrays.asList(
    "张三", "张三丰", "张大佛爷", "张").stream();

也可以使用generate产生无限数量的stream,当然可以用limit方法限制

下面的语句将产生无数的随机数字,将一直循环下去

代码语言:javascript
复制
Stream<Double> dsStream = 
    Stream.generate(Math::random);
dsStream.forEach(System.out::println);

使用Stream

filter方法的使用,filter顾名思义,过滤的作用,怎么过滤呢?

比如说我们有个姓名的集合,想要统计出集合里名字的字数大于1的数量有多少?

首先是不使用stream的传统方法

代码语言:javascript
复制
List<String> contents = 
         Arrays.asList("张三", "张三丰", "张大佛爷", "张");
int count = 0;
for (String con : contents) {
  if(con.length() > 1) {
      count++;
  }
}
System.out.println(count);

下面是使用stream之后的代码,一行就搞定了,在filter方法里用lambda表达式进行过滤,然后用count方法统计出符合条件的数量。

代码语言:javascript
复制
long new_count = contents.stream()
      .filter(con -> con.length() > 1).count();
System.out.println(new_count);

当然如果你的数据量比较多,而你希望统计的速度更快时,可以使用并行处理的stream来操作。

代码语言:javascript
复制
new_count = contents.parallelStream()
     .filter(con -> con.length() > 1).count();

map方法的使用

map其实就是将stream中的数据映射成 output Stream 的另外一个元素。全部循环的过一遍。

使用map可以将stream中的值都转成大小写,如果用List的话还得循环变量然后取toUpperCase()

代码语言:javascript
复制
Stream<String> stream = 
    Stream.of("java", "css", "php");
stream.map(String::toUpperCase)
    .forEach(System.out::println);

flatMap的使用和map一样

不同的点在于flatMap是将多个stream中的多个数据集合连接起来成为一个最终的stream。

代码语言:javascript
复制
Stream<List<Integer>> number_stream =
Stream.of(
   Arrays.asList(10),
   Arrays.asList(22, 33),
   Arrays.asList(44, 55, 66)
);
number_stream.flatMap((c) -> c.stream())
   .forEach(System.out::println);

最终的结果就变成了Stream 输出结果就是10,22,33,44,55,66

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义Stream
  • 使用Stream
  • map方法的使用
  • flatMap的使用和map一样
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档