当前位置: 首页 > news >正文

java stream简介

(1)Stream

Stream(流)是一个来自数据源的元素队列并支持聚合操作。
forEach方法用来迭代流中的每个数据,没有返回值。map方法用于映射每个元素到对应的结果,有返回值,返回的是一个新流,可以对这个流进一步操作。
filter方法用于通过设置的条件过滤出元素。limit返回前n个元素。skip则是返回除前n个元素的元素。distinct方法用于去重。
sorted方法用于对流进行排序,例如,sorted()用于升序,sorted(Comparator.reverseOrder())用于降序。
max用于获取最大值。min用于获取最小值。count用于计算元素数量。sum用于求和。
anyMatch满足一个条件则返回true。allMatch满足所有条件则返回true。noneMatch不满足所有条件则返回true。findFirst返回第一个元素。findAny返回任意一个元素。
collect,收集流。Collectors类实现了很多归约操作,例如,toList、toMap、toSet、counting、summingInt、averagingInt、maxBy、minBy、joining、groupingBy等等。
reduce,聚合,将流中全部的数据聚合成一个值。

(2)测试

User tom = new User(1, "tom", 2, new Date());
User jerry = new User(3, "jerry", 1, new Date());
User diana = new User(2, "diana", 3, new Date());
List<User> userList = Arrays.asList(tom, jerry, diana);
log.info("list:{}", userList);
userList.stream().forEach(u -> {if (u.getAge() > 1) {log.info("{}", u);}
});
List<Integer> list = userList.stream().map(u -> u.getAge() + 1).limit(10).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
log.info("list:{}", list);
Map<Integer, Object> map = userList.stream().collect(Collectors.toMap(User::getId, User::getName));
log.info("map:{}", map);
boolean flag = userList.stream().anyMatch(u -> u.getAge() > 5);
log.info("flag:{}", flag);
User any = userList.stream().findAny().get();
log.info("any:{}", any);
User max = userList.stream().max((u1, u2) -> u1.getAge() - u2.getAge()).get();
log.info("max:{}", max);
Integer sum = userList.stream().map(u -> u.getAge()).reduce(0, (a1, a2) -> {return a1 + a2;
}).intValue();
log.info("sum:{}", sum);
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - list:[User(id=1, name=tom, age=2, birth=Fri Jan 26 14:45:26 CST 2024), User(id=3, name=jerry, age=1, birth=Fri Jan 26 14:45:26 CST 2024), User(id=2, name=diana, age=3, birth=Fri Jan 26 14:45:26 CST 2024)] 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - User(id=1, name=tom, age=2, birth=Fri Jan 26 14:45:26 CST 2024) 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - User(id=2, name=diana, age=3, birth=Fri Jan 26 14:45:26 CST 2024) 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - list:[4, 3, 2] 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - map:{1=tom, 2=diana, 3=jerry} 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - flag:false 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - any:User(id=1, name=tom, age=2, birth=Fri Jan 26 14:45:26 CST 2024) 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - max:User(id=2, name=diana, age=3, birth=Fri Jan 26 14:45:26 CST 2024) 
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO  cn.hwd.controller.TestController - sum:6 
http://www.lryc.cn/news/290547.html

相关文章:

  • 机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好
  • 分布式ID(4):雪花算法生成ID之Leaf(美团点评分布式ID生成系统)
  • 翻译: GPT-4 Vision征服LLM幻觉hallucinations 升级Streamlit六
  • TextView的setTextSize与xml中android:textSize属性值的对应关系
  • 广东盈致mes系统在注塑行业的应用
  • 如何获得《幻兽帕鲁》隐藏帕鲁唤夜兽?13000个配种配方查询 幻兽帕鲁Steam好评率还在涨 Mac苹果电脑玩幻兽帕鲁 Crossover玩Windows游戏
  • elementui中的tree自定义图标
  • mybatis实现模糊搜索
  • ssh 修改端口号 一个ip ssh多个主机
  • Proto文件如何生成JavaProto对象?
  • LightDB 24.1 UNION支持null类型匹配
  • 使用vs2022将.net8的应用程序发布为一个单独文件
  • 面试经典150题(93-95)
  • flask 实现token生成以及携带token请求接口
  • docker-compose部署单机ES+Kibana
  • gitee仓库项目迁移到gitlab仓库
  • 安装elasticsearch、kibana、IK分词器
  • 海外云手机运营Instagram攻略
  • 【lesson25】学习MySQL事务前的基础知识
  • SkyWalking+es部署与使用
  • js获取html中的img标签,图片标签,提取src属性并替换操作
  • 【力扣经典面试题】27. 移除元素
  • MicrosoftEdge浏览器打开网页出现“此网站被人举报不安全”问题时解决办法
  • 【PyCharm教程】PyCharm 安装、卸载和升级包
  • 蓝桥杯-常用STL(一)
  • SQL查询数据库环境(dm8达梦数据库)
  • DolphinScheduler + Amazon EMR Serverless 的集成实践
  • 【服务器APP】利用HBuilder X把网页打包成APP
  • vue3 组合式API获取子组件的属性和方法
  • [数据结构+算法] 给一棵树和一个sum,判断是否存在从root到叶子结点的path之和等于sum?