当前位置:   article > 正文

java stream简介

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)测试

  1. User tom = new User(1, "tom", 2, new Date());
  2. User jerry = new User(3, "jerry", 1, new Date());
  3. User diana = new User(2, "diana", 3, new Date());
  4. List<User> userList = Arrays.asList(tom, jerry, diana);
  5. log.info("list:{}", userList);
  6. userList.stream().forEach(u -> {
  7. if (u.getAge() > 1) {
  8. log.info("{}", u);
  9. }
  10. });
  11. List<Integer> list = userList.stream().map(u -> u.getAge() + 1).limit(10).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
  12. log.info("list:{}", list);
  13. Map<Integer, Object> map = userList.stream().collect(Collectors.toMap(User::getId, User::getName));
  14. log.info("map:{}", map);
  15. boolean flag = userList.stream().anyMatch(u -> u.getAge() > 5);
  16. log.info("flag:{}", flag);
  17. User any = userList.stream().findAny().get();
  18. log.info("any:{}", any);
  19. User max = userList.stream().max((u1, u2) -> u1.getAge() - u2.getAge()).get();
  20. log.info("max:{}", max);
  21. Integer sum = userList.stream().map(u -> u.getAge()).reduce(0, (a1, a2) -> {
  22. return a1 + a2;
  23. }).intValue();
  24. log.info("sum:{}", sum);
  1. 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)]
  2. 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)
  3. 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)
  4. 2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - list:[4, 3, 2]
  5. 2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - map:{1=tom, 2=diana, 3=jerry}
  6. 2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - flag:false
  7. 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)
  8. 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)
  9. 2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - sum:6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/47842
推荐阅读
相关标签
  

闽ICP备14008679号