Stream 流

1,什么是 Stream

    stream /striːm/ ,溪,小溪,数据流

  • IO 流:字节流、字符流,用于数据传输,输入和输出
  • 集合框架:Collection(List)、MapIterator(迭代器)
  • Stream 流:配合 lambda 表达式,用于数据处理(过滤、排序、聚合、统计、分组等各种计算,可看作是增强版的 Iterator
  • Collection 是一种静态的内存数据结构,主要面向内存,存储在内存中
  • Stream 是有关计算的,主要是面向CPU,通过CPU实现计算

2,Stream 常用方法

2.1 筛选(filter、distinct、skip、limit)

2.2 排序(sorted

  • sorted():自然排序,流中元素需实现Comparable接口
  • sorted(Comparator c):Comparator排序器自定义排序
// List 排序
list.stream().sorted((x,y)->{
	// 如果时间为空,放到末尾
	if(StringUtil.isEmpty(x.get("time"))) return 1;
	if(StringUtil.isEmpty(y.get("time"))) return -1;
	return y.get("time").compareTo(x.get("time"));
}).collect(collectors.tolist());

// List<DTO> 排序
mQaColNameRepeatDtos = mQaColNameRepeatDtos.stream().sorted(Comparator.comparing(e->e.getColNameEns().size())).collect(Collectors.toList());
Collections.reverse(mQaColNameRepeatDtos);



// JSONArray 排序
jsonArray.stream().sorted((x,y)->{
	String timeX = ((JSONObject) x).getString("time");
	String timeY = ((JSONObject) y).getString("time");
	if(StringUtil.isEmpty(timeX)) return 1;
	if(StringUtil.isEmpty(timeY)) return -1;
	return timeY.compareTo(timeX);
}).collect(Collectors.toCollection(JSONArray::new));

// JSONArray转list
List<JSONObject> list = JSONArray.parseArray(dataArray.toJSONString(), JSONObject.class);
// 逆序
Collections.reverse(list);
// list转JSONArray
JSONArray dataArray = JSONArray.parseArray(list.toString());

2.3 映射(map

  • map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素

在这里插入图片描述

2.4 聚合(max/min/count)

2.5 归约(reduce)

2.5 收集(collect)

2.5.1 统计(count/averaging)

2.5.2 分组(partitioningBy/groupingBy)

2.5.3 归约(reducing)

结构参考:

Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合_云深不知处-优快云博客_java stream 聚合Java8 Stream横空出世,让我们从繁琐冗长的迭代中解脱出来,集合数据操作变得优雅简洁。这些操作:集合的filter(筛选)、归约(reduce)、映射(map)、收集(collect)、统计(max、min、avg)等等,一行代码即可搞定!让我们一起敲打案例代码,搞定Java8 stream吧!https://blog.youkuaiyun.com/mu_wind/article/details/109516995?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163762992816780274199750%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163762992816780274199750&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109516995.first_rank_v2_pc_rank_v29&utm_term=stream&spm=1018.2226.3001.4187

3,终止操作分类

3.1 查找与匹配

3.2 归约

3.3 收集

3.4 参考

java8新特性之Stream 终止操作的多种方式_战丶后风!!的博客-优快云博客_java stream 中断1、概述终止操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如:List、Integer 。2、终止操作分类①查找与匹配方法简述allMatch(Predicate p)检查是否匹配所有元素anyMatch(Predicate )检查是否至少匹配一个元素noneMatch(Predicate p)检查是否没有匹配所有元素find...https://blog.youkuaiyun.com/weixin_44187730/article/details/93737517

java8新特性之Stream 终止操作的多种方式_战丶后风!!的博客-优快云博客_java stream 中断1、概述终止操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如:List、Integer 。2、终止操作分类①查找与匹配方法简述allMatch(Predicate p)检查是否匹配所有元素anyMatch(Predicate )检查是否至少匹配一个元素noneMatch(Predicate p)检查是否没有匹配所有元素find...https://blog.youkuaiyun.com/weixin_44187730/article/details/937375174,idea 中 Stream 调试

5,参考链接

Java8新特性——Stream流:不同于IO流的流,操作集合数据_LH is programming hard-优快云博客文章目录1、什么是Stream流1、认识Stream流2、Stream流和Collection的区别3、流的获取方式4、流操作和管道1、什么是Stream流1、认识Stream流2、Stream流和Collection的区别在Package java.util.stream这个包中引入的关键类是stream。类Stream、IntStream、LongStream和DoubleStream是对象上的流以及原始int、long和double类型。流在几个方面与集合不同:没有存储。流不是存储元素https://blog.youkuaiyun.com/qq_44861675/article/details/108149851

图解Java流(Stream)_wBkvam-优快云博客Java StreamJava 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate ophttps://blog.youkuaiyun.com/weixin_43737917/article/details/108012573

Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合_云深不知处-优快云博客_java stream 聚合Java8 Stream横空出世,让我们从繁琐冗长的迭代中解脱出来,集合数据操作变得优雅简洁。这些操作:集合的filter(筛选)、归约(reduce)、映射(map)、收集(collect)、统计(max、min、avg)等等,一行代码即可搞定!让我们一起敲打案例代码,搞定Java8 stream吧!https://blog.youkuaiyun.com/mu_wind/article/details/109516995?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163762992816780274199750%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163762992816780274199750&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109516995.first_rank_v2_pc_rank_v29&utm_term=stream&spm=1018.2226.3001.4187

Java8初体验(二)Stream语法详解 | 并发编程网 – ifeve.comhttp://ifeve.com/stream/

一篇文章带你学Stream流 - 知乎一、什么是Stream流很多同学在看到流这个字的时候,就往往都会想到了IO流,想到这个流又可以操作什么类型的文件? 其实并不是这样的,Stream流跟IO流根本就是完全不同的两种东西。 Stream是JDK8的新特性。用于操作…https://zhuanlan.zhihu.com/p/72973477

Java IO流 --- 流(Stream)的概念与分类_qq_30007589的博客-优快云博客_stream流和io流流  ---&gt;  Stream1.什么是流?   流即代表流动,这里是指数据的流动,流是有方向的,从一端流向另一端,存在源头和目的地,即数据以一定形式(字符|字节)从源头流向目的地;   程序     &lt;-------------&gt;    文件|数组|网络连接|数据库(存放数据的对象)   数据在程序和可操作数据源之间流动,以程序为中心2. IO流的分类 ...https://blog.youkuaiyun.com/qq_30007589/article/details/81078825

JavaSE笔记(2.8)IO流与jdk1.8 Stream新特性 - it610.com前言后续学习到网络编程、并发编程,发现JavaSE中还有个Stream流没有系统的复习流在jdk1.8之前是IO流,jdk1.8新添加了stream特性用于处理集合这两者是不同的目录IO流1.1.分类新特性:StreamStream操作3.1.创建流3.2.中间操作3.3.结束操作总结IO流jdk1.8之前就存在流,它属于IO包(java.io),用于数据传输IO流的使用很简单,就是调用API,重https://www.it610.com/article/1305394123578052608.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值