前言

用Stream代替for循环进行输出可以使代码更简洁。

例如

        List<String> players =Arrays.asList("kebe","jams","cuerry","cyyt");for (String player: players){if (player.startsWith("k")){String temp =player.toUpperCase();System.out.println(temp);}}

转化成Stream流一行代码就可以搞定

 List<String> plt=  players.stream().filter(s->s.startsWith("c")).map(String::toUpperCase).sorted().collect(Collectors.toList());

数组也是可以转化为流的

String[]playes={"kobe","james","curry","cyyt"};
Stream.of(players).filter().map();

Stream并行流

这里为什么要区分有状态和无状态呢,对于有状态操作,尽量不使用并行。

那什么又是并行呢,.paralleStream()

Stream并行流计算>>普通for循环~=Stream串行流计算(并不一定,各有各性能比较好和比较差的情况)

数据容量越大,Stream流的执行效率越高。

Stream并行流计算通常能够比较好的利用CPU的多核优势。CPU核心越多,Stream并行流计算效率越高。

Stream查找与匹配元素

List<Employee> employees = Arrays.asList(e1,e2,e3,e4,e5,e6)employees.stream().anyMatch(e->e.getAge()>70) //是否有一个人的年龄大于70,
employees.stream().allMatch(e->e.getAge()>10)//是否所有人的年龄都大于10
employees.stream().noneMatch(e->e.getAge()<18)//是否不存在小于18的人
employees.stream().filter(e->e.getAge()>40).findFirst(); //第一个年龄大于40的人
employees.stream().filter(e->e.getAge()>40).findAny()//查找任意一个年龄大于40的人
employees.stream().filter(e->e.getAge()>90).findFirst().orElse(new Employee(0,0,"F","","")//如果没有查到第一个大于90的人,就给一个默认值。

Stream集合元素归约

就是累加起来

List<Integer> numbers =Arrays.asList(1,2,3,4,5,6);
Integer total = numbers.stream().reduce(0,(subtotal,element)->subtotal+element)
//Integer total = numbers.stream().reduce(0,Integer::sum)  总数求和,这两个是一样的

总结

感觉需要学习的东西越来越多,自己也越来越菜。

Stream代替for循环相关推荐

  1. stream 定长循环_Java8之Stream流代替For循环操作

    Stream流代替For循环进行输出可以使代码更简洁. 需求:根据姓名获取员工信息 1.建立实体类:Emp 2.测试类: (1.) 原始For写法: (2.) Stream流: 输出结果为: 补充知识 ...

  2. java DTO循环_Java Stream与for循环比较

    导读: 笔者使用的是小米笔记本 1.99 GHz 四核Intel Core i7,本文对比了几种方法求素数耗时.这几种方法分别是:传统的for方法,java8 stream流,parallel str ...

  3. Java 跳出For循环总结

    Java 8 之前终止单层For循环 功能代码: // break 终止循环for (int i=0; i< 10; i++){if(i == 5) {break;}System.out.pri ...

  4. java(九)-方法引用, Stream流,File类 , 递归 ,字节流

    day09[方法引用.Lambda表达式.Stream流] 今日目标 线程状态 等待与唤醒 Lambda表达式 Stream流 教学目标 能够说出线程6个状态的名称 能够理解等待唤醒案例 能够掌握La ...

  5. gRPC的stream使用

    gRPC的stream介绍 gRPC的stream介绍 gRPC为什么提供 steam功能? gRPC的stream的分类 一元RPC 客户端流RPC 服务端流RPC 双向流RPC gRPC的stre ...

  6. java循环删除集合数据_java中循环的几种方式以及删除集合中的指定数据

    一.for //for循环中删除数据 -- 方法有漏洞 private static void deleteAtFor() { ArrayList array = new ArrayList<& ...

  7. HashMap 的 7 种遍历方式与性能分析!(强烈推荐)

    来自:Java中文社群 随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历 ...

  8. 改善代码可测性的若干技巧

    概述 软件的工程性体现在质量与效率.单测是构成软件质量的第一道防线,而单测覆盖率是软件质量的重要指标之一. 编写容易测试的代码,可带来更佳的单测覆盖率,间接提升开发效率. 为什么程序员不大写单测呢? ...

  9. HashMap 的 7 种遍历方式与性能分析!

    随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...

最新文章

  1. 一步步学习SPD2010--第十四章节--在Web页面使用控件(3)--验证用户数据输入
  2. ASP:Literal控件用法
  3. 国际10-20标准电极位置
  4. [caffe]深度学习之图像分类模型VGG解读
  5. 验证用户身份Filter过滤器
  6. php use include区别,php use和include区别总结
  7. POJ 1172 DFS
  8. 文字在状态栏上从右往左显示,而且是循环的
  9. 虎牙游戏直播基于php swoole,centos6.8 php7+swoole 实现赛事直播系统
  10. 转载:linux驱动层到应用层的重要接口sys文件系统---/sys目录详解
  11. CenterNet :Objects as Points 详解
  12. Coil:为Kotlin而生的图片加载框架
  13. case when then 后返回多个值
  14. 地表温度反演(大气上行、下行亮度及大气透过率的查找)
  15. OGNL表达式和EL表达式
  16. 百度地图离线开发demo-测距(vue+百度地图3.0+百度瓦片)
  17. 【地图学】二、地图矢量化
  18. ubuntu下安装Firefox中国版解决Ubuntu与Windows下Firefox账号同步问题
  19. nc7下某个用户某个节点有多个模板,可以通过代码实现通过选择不同的业务流程来调用不同的模板吗?
  20. ppt可以转换成HTML格式吗,极强PDF转换器如何将ppt转换成html网页格式

热门文章

  1. 图形图像学习随笔:计算机图形学的一些基本概念
  2. Windows下手把手教Snort的安装与配置教程
  3. 2012年互联网创业者生存与发展报告
  4. 在win10上搭建完整Kubernetes、Istio、Prometheus、Grafana和Knative
  5. 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】
  6. 关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题
  7. vulhub漏洞复现-bash(CVE-2014-6271) shellshock-破壳漏洞
  8. 曾经写的俄罗斯方块源码 2021-06-13
  9. 雷军伯乐:天才程序员求伯君的退休生活
  10. 玩吃鸡时错误服务器维护,更新吃鸡时发生错误无法连接服务器 | 手游网游页游攻略大全...