Stream代替for循环
前言
用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循环相关推荐
- stream 定长循环_Java8之Stream流代替For循环操作
Stream流代替For循环进行输出可以使代码更简洁. 需求:根据姓名获取员工信息 1.建立实体类:Emp 2.测试类: (1.) 原始For写法: (2.) Stream流: 输出结果为: 补充知识 ...
- java DTO循环_Java Stream与for循环比较
导读: 笔者使用的是小米笔记本 1.99 GHz 四核Intel Core i7,本文对比了几种方法求素数耗时.这几种方法分别是:传统的for方法,java8 stream流,parallel str ...
- Java 跳出For循环总结
Java 8 之前终止单层For循环 功能代码: // break 终止循环for (int i=0; i< 10; i++){if(i == 5) {break;}System.out.pri ...
- java(九)-方法引用, Stream流,File类 , 递归 ,字节流
day09[方法引用.Lambda表达式.Stream流] 今日目标 线程状态 等待与唤醒 Lambda表达式 Stream流 教学目标 能够说出线程6个状态的名称 能够理解等待唤醒案例 能够掌握La ...
- gRPC的stream使用
gRPC的stream介绍 gRPC的stream介绍 gRPC为什么提供 steam功能? gRPC的stream的分类 一元RPC 客户端流RPC 服务端流RPC 双向流RPC gRPC的stre ...
- java循环删除集合数据_java中循环的几种方式以及删除集合中的指定数据
一.for //for循环中删除数据 -- 方法有漏洞 private static void deleteAtFor() { ArrayList array = new ArrayList<& ...
- HashMap 的 7 种遍历方式与性能分析!(强烈推荐)
来自:Java中文社群 随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历 ...
- 改善代码可测性的若干技巧
概述 软件的工程性体现在质量与效率.单测是构成软件质量的第一道防线,而单测覆盖率是软件质量的重要指标之一. 编写容易测试的代码,可带来更佳的单测覆盖率,间接提升开发效率. 为什么程序员不大写单测呢? ...
- HashMap 的 7 种遍历方式与性能分析!
随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...
最新文章
- 一步步学习SPD2010--第十四章节--在Web页面使用控件(3)--验证用户数据输入
- ASP:Literal控件用法
- 国际10-20标准电极位置
- [caffe]深度学习之图像分类模型VGG解读
- 验证用户身份Filter过滤器
- php use include区别,php use和include区别总结
- POJ 1172 DFS
- 文字在状态栏上从右往左显示,而且是循环的
- 虎牙游戏直播基于php swoole,centos6.8 php7+swoole 实现赛事直播系统
- 转载:linux驱动层到应用层的重要接口sys文件系统---/sys目录详解
- CenterNet :Objects as Points 详解
- Coil:为Kotlin而生的图片加载框架
- case when then 后返回多个值
- 地表温度反演(大气上行、下行亮度及大气透过率的查找)
- OGNL表达式和EL表达式
- 百度地图离线开发demo-测距(vue+百度地图3.0+百度瓦片)
- 【地图学】二、地图矢量化
- ubuntu下安装Firefox中国版解决Ubuntu与Windows下Firefox账号同步问题
- nc7下某个用户某个节点有多个模板,可以通过代码实现通过选择不同的业务流程来调用不同的模板吗?
- ppt可以转换成HTML格式吗,极强PDF转换器如何将ppt转换成html网页格式
热门文章
- 图形图像学习随笔:计算机图形学的一些基本概念
- Windows下手把手教Snort的安装与配置教程
- 2012年互联网创业者生存与发展报告
- 在win10上搭建完整Kubernetes、Istio、Prometheus、Grafana和Knative
- 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】
- 关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题
- vulhub漏洞复现-bash(CVE-2014-6271) shellshock-破壳漏洞
- 曾经写的俄罗斯方块源码 2021-06-13
- 雷军伯乐:天才程序员求伯君的退休生活
- 玩吃鸡时错误服务器维护,更新吃鸡时发生错误无法连接服务器 | 手游网游页游攻略大全...