Stream流知多少

自作孽说熟悉java 8中的Stream,好咯,回答的一头雾水,还是查完资料后整理输出一遍吧。

1、是什么

Stream 使用一种类似与SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。这种风格类似于将要处理的元素结合看做一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选、排序、集合等等。

2、有什么优点

  • 无存储。它只是某中数据源的一种视图,数据源可以是一个数组
  • 可消费性。Stream只能被消费一次,一旦遍历过就会失效,想要再次遍历就必须重新生成
  • 为函数式编程而生。对Stream的任何修改都不会修改背后的数据源

3、怎么用

对于流的处理,主要有三个关键的操作:

  • 流的创建
  • 中间操作
  • 最终操作

 3.1 流的创建:

  • 通过已有的list创建一个流
  • 通过Stream来创建流  stream.of(....)

3.2 中间操作

  • filter:过滤
  • limit:取元素(前几个)
  • skip:丢弃元素(前几个)
  • distinct:去重
  • map:转换流中的数据类型
  • sorted:排序

3.3 最终方法

  • foreach:遍历
  • count:统计
  • toArray:手机流中的数据放到数组中
  • collect:手机流中的数据,房到集合中

4、练习

数据过滤:集合1~10,过滤奇数,只留留下偶数,将结果保存

1
2
3
List<Integer>  list  = new  ArrayList<>();
Collections.addAll(list,1,2,3,4,5,6,7,8,9,10);
List<Integet>  conllect  = list.stream.filter(item -> item%2 == 0).collector.toList());

字符串过滤并收集:arraylist集合,添加"zhangsan,23", "lisi, 4", "wangwu, 25" 保留年龄大于24岁的人,并将结果收集到Map集合中,其中姓名为键,年龄为值

1
2
3
4
5
6
List<String> list = new ArrayList<>();
Collections.addAll(list, "zhangsan,23", "lisi,24", "wangwu,25");
Map<String, String> map = list.stream()
        .filter(item -> Integer.parseInt(item.split(",")[1]) >= 24)
        .collect(Collectors.toMap(item -> item.split(",")[0], item -> item.split(",")[1]));
System.out.println(map);

  

posted @   星桐  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示