博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java链式编程(Stream流)
阅读量:4072 次
发布时间:2019-05-25

本文共 2348 字,大约阅读时间需要 7 分钟。

Java链式编程示例

java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样你就可以将多个操作依次串起来。通过Stream中的常用函数Filter(过滤)Map(映射)Sort(排序)Count(计数) 等常用函数接口,我们可以很方便的对数据流处理,极大地简化编程,提高代码可读性。

  • Filter(过滤):将数据流中满足过滤条件的数据筛选出来
  • Map(映射):将输入流的数据通过映射函数转化为其它数据流形式(可以改变值和数据类型)
  • Sort(排序):将数据流中的数据进行排序,未重写排序接口按默认排序进行
  • Count(计数):统计到Count函数时的数据流中数据个数

Java代码示例(1)

import java.util.ArrayList;import java.util.List;public class StreamDemo {
int age; String name; public StreamDemo(int age,String name) {
this.age=age; this.name=name; } public static void main(String[] args) {
List
stringList = new ArrayList<>(); stringList.add(new StreamDemo(10,"ddd2")); stringList.add(new StreamDemo(13,"aba2")); stringList.add(new StreamDemo(12,"bab1")); stringList.add(new StreamDemo(15,"aca1")); stringList.add(new StreamDemo(9,"bcb3")); stringList.add(new StreamDemo(18,"cdc")); stringList.add(new StreamDemo(20,"bdb2")); stringList.add(new StreamDemo(21,"dad1")); stringList.stream() .filter((s)->s.name.startsWith("a")&&s.age>10) //过滤条件 .sorted((o1,o2)->o2.age-o1.age) //排序规则:按照年龄从大到小 .map((s)->{
s.name.replace('b','e');s.age++;return s;}) //映射函数:年龄自增,姓名字符替换 .forEach((s)->{
System.out.println("年龄:"+s.age+"\t姓名:"+s.name);}); //打印对象 }}

运行结果

结果

Java代码示例(2)

import java.util.ArrayList;import java.util.List;public class StreamDemo {
int age; String name; public StreamDemo(int age,String name) {
this.age=age; this.name=name; } public static void main(String[] args) {
List
stringList = new ArrayList<>(); stringList.add(new StreamDemo(10,"ddd2")); stringList.add(new StreamDemo(13,"aba2")); stringList.add(new StreamDemo(12,"bab1")); stringList.add(new StreamDemo(15,"aca1")); stringList.add(new StreamDemo(9,"bcb3")); stringList.add(new StreamDemo(18,"cdc")); stringList.add(new StreamDemo(20,"bdb2")); stringList.add(new StreamDemo(21,"dad1")); stringList.stream() .filter((s)->s.name.startsWith("a")&&s.age>10) //过滤条件 .sorted((o1,o2)->o2.age-o1.age) //排序规则:按照年龄从大到小 .map((s)->s.name.replace('b','e')) //映射函数:姓名字符替换,返回字符串 .forEach(System.out::println); //打印字符串姓名 }}

运行结果

结果

注意两次的代码中Map映射后返回类型,决定了后面数据流的数据类型和相关操作!!!

当然,代码未展示Stream中的其他函数接口,包括并行计算、计数等等,读者可以下去自行探究。希望我的总结对你们有帮助,博客中相关问题欢迎询问探讨,相互学习。QQ:1476154032,以上。

转载地址:http://lxzni.baihongyu.com/

你可能感兴趣的文章
swift中单例的创建及销毁
查看>>
获取App Store中App的ipa包
查看>>
iOS 关于pods-frameworks.sh:permission denied报错的解决
查看>>
设置RGBColor
查看>>
设置tabbaritem的title的颜色及按钮图片
查看>>
动态设置label的高度
查看>>
获取 一个文件 在沙盒Library/Caches/ 目录下的路径
查看>>
图片压缩
查看>>
检测缓存文件是否超时
查看>>
十进制字符串转十六进制字符串
查看>>
属性字符串(富文本)的使用
查看>>
cell上label的背景颜色在选中状态下改变的解决办法
查看>>
GPS定位
查看>>
地图、显示用户位置、大头针
查看>>
自定义大头针
查看>>
UIButton添加block点击事件
查看>>
利用runtime给类别添加属性
查看>>
本地推送
查看>>
FMDB的使用
查看>>
UIImage存为本地文件与UIImage转换为NSData
查看>>