Java8 新特性 Steam() 中间有状态操作
中间有状态操作
中间操作,就是把数据处理成自己想要的类型,并且有状态操作,是在所有的数据基础上进行操作的。比如dictinct(去重),sorted(排序)....
所有的有状态操作:
去重 distinct
跳过 skip
截断 limit
排序 sorted
去重 distinct
//找出所有的对象的类型
@Test
public void test1() {
list.stream()
//找出所有的对象的类型
.map(Sku::getSkuCategory)
//然后去重
.distinct()
.forEach(System.out::println);
}
/*
ELECTRONICS
CLOTHING
SPORTS
BOOKS
*/
跳过 skip
/**
* 跳过 skip
*/
@Test
public void test2() {
//没有过滤
list.stream()
.forEach(item -> System.out.println(
JSON.toJSONString(
item.getSkuId(), true)));
long count = list.stream().count();
System.out.println("总共有" + count + "个对象");
//跳过 skip
list.stream()
//跳过前7个
.skip(7)
.forEach(item -> System.out.println(
JSON.toJSONString(
item.getSkuId(), true)));
/**
* 输出的结果:
* 100001
* 100002
* 100003
* 100004
* 100005
* 100006
* 100007
* 100008
* 100009
* 总共有9个对象
* 100007
* 100008
* 从1开始,到第7个开始获取
*/
}
截断 limit
/**
* 截断 limit
*/
@Test
public void limitTest() {
list.stream()
//截断
.limit(1)
//输出
.forEach(item ->
System.out.println(
JSON.toJSONString(item,true)));
/**
* 只截断了第一个
* 剩下来的全部都丢弃
* "skuCategory":"ELECTRONICS",
* "skuId":100001,
* "skuName":"无人机",
* "skuPrice":4999.0,
* "totalNum":1,
* "totalPrice":4999.0
*
*/
}
排序 sorted
/**
* sorted 排序
*/
@Test
public void sortedTest() {
List<Double> collect = list.stream()
//排序
.sorted(Comparator.comparing(Sku::getSkuPrice))
//映射成只有价格
.map(Sku::getSkuPrice)
//把经果收集成价格列表
.collect(Collectors.toList());
//循环输出出来
collect.forEach(System.out::println);
/**
* //价格升序排列,倒序排列:reversed 在 comparing 加上去
* 78.2
* 79.8
* 85.5
* 149.0
* 409.0
* 528.0
* 2299.0
* 2699.0
* 4999.0
*/
细节决定成败!
个人愚见,如有不对,恳请扶正!
Java8 新特性 Steam() 中间有状态操作的更多相关文章
- 功能:Java8新特性steam流
Java8新特性steam流 一.包装数据类型 @Test public void main22() { List<Integer> list = new ArrayList<Int ...
- Java8新特性一点通 | 回顾文件操作和watchService文件变更监视操作
文件操作 WatchService 文件操作 今天重温了一些文件操作: - Files.list() 遍历文件和目录 //List all files and sub-directories usin ...
- Java8 新特性 Stream() API
新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...
- Java8 新特性 Stream 练习实例
练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...
- Java8 新特性 Stream 无状态中间操作
无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...
- Java8 新特性 Stream 非短路终端操作
非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...
- Java8 新特性 Stream 短路终端操作
短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...
- Java8 新特性之集合操作Stream
Java8 新特性之集合操作Stream Stream简介 Java 8引入了全新的Stream API.这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同 ...
- 【Java8新特性】Stream API有哪些中间操作?看完你也可以吊打面试官!!
写在前面 在上一篇<[Java8新特性]面试官问我:Java8中创建Stream流有哪几种方式?>中,一名读者去面试被面试官暴虐!归根结底,那哥儿们还是对Java8的新特性不是很了解呀!那 ...
随机推荐
- Winform的控件以及DataGridView的一般使用
先上学习测试的一些截图 1:获取多个控件上面的值(checkbox,combobox,textbox,radiobutton) 2:获取到选择行的主键ID的value,方便我们进一步CURD 3:获取 ...
- go 1.11 模块和版本管理
自2007年“三巨头(Robert Griesemer, Rob Pike, Ken Thompson)”提出设计和实现Go语言以来,Go语言已经发展和演化了十余年了.这十余年来,Go取得了巨大的成就 ...
- Java面试题:Java中的集合及其继承关系
关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.这里我们看这张图即可: 1.List.Set.Map是否继承自Collection接口? List.Set ...
- Java性能 -- 线程上下文切换
线程数量 在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行 线程数量设置太小,会导致程序不能充分地利用系统资源 线程数量设置太大,可能带来资源的过度竞争,导致上下文切换,带来的额外的系统 ...
- deepin把vscode设为默认文本应用
一开始我想自己写一个desktop文件放在/usr/share/applications下面,结果在右键菜单里面找不到vscode. [Desktop Entry] Categories=Develo ...
- vue实现word,pdf文件的导出功能
vue实现word或pdf文档导出的功能,我的项目是:后端返回一个文档流(下图),然后前端对文档流做处理进行下载,代码如下: import axios from 'axios'; axios.get( ...
- tcp_tw_recycle参数引发的数据库连接异常
[问题描述] 开发反馈有个应用在后端数据库某次计划性重启后经常会出现数据库连接异常问题,通过监控系统的埋点数据,发现应用连接数据库异常有两类表现: 其一:连接超时 131148.00ms To ...
- vue定时器+弹框 跳到登陆页面
1.做一个请求拦截,并弹框提示几秒后,跳转到登陆首页或是点击确定之后直接跳转拦截用了this.$axios.interceptors.response页面上的弹框组件用了vux的组件vux地址:htt ...
- 笔记4:WEB服务器
web服务器 1 HTTP协议 http:超文本传输协议,基于tcp的方式,会更稳当更安全.协议就是规定了怎样去请求服务器,服务器如何返回信息.如下图红色方框标记所示: 打开浏览器电商广告原理: 我们 ...
- RabbitMQ的几个常见问题
1. 如何保证消息尽量发送成功? 问题描述: 如果没有启动消费者,重启了RabbitMQ服务,队列和消息都会丢失. 解决方案: 针对这个问题,有以下几个机制可以解决: 生产者确认: 持久化: 手动AC ...