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); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!