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的新特性不是很了解呀!那 ...
随机推荐
- TCP SYN flood洪水攻击原理和防御破解
简介 TCP协议要经过三次握手才能建立连接: 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+AC ...
- java实现word生成并转pdf
前言 本篇博客主要解决java后台动态生成word(docx格式),并将word转换为pdf并添加水印. 思考 项目需求是要导出带水印的pdf,表格样式还是有点复杂的,之前考虑过用itextpdf根据 ...
- 多线程学习笔记(二) BackgroundWorker 和 ProgressChanged
BackgroundWorker是在内部使用了线程池的技术:同时,在Winform 或WPF编码中,它还给工作线程和UI线程提供了交互的能力. Thread和ThreadPool默认都没有提供这种交互 ...
- linux 进程通信之 守护进程
守护进程(Daemon) Daemon(精灵)进程,是linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的时间.一般采用以d结尾的名字.从下面的进程信息可以看出, ...
- 2-3 arrary数组的数值的计算
In [2]: import numpy as np tang_array=np.array([[1,2,3],[4,5,6]]) tang_array Out[2]: array([[1, 2, 3 ...
- 为何JAVAWEB绝对路径访问不了图片
为何JAVAWEB绝对路径访问不了图片?其实这涉及到两个原因 1:浏览器类型不同: 五大主流浏览器内核有所不同,能够支持的功能不一样:如谷歌浏览器就不能查看绝对路径 2:涉及到保护隐私安全: (谷歌浏 ...
- 使用Nginx+Openresty实现WAF功能
什么是WAF Web应用防护系统(也称为:网站应用级入侵防御系统.英文:Web Application Firewall,简称: WAF).利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针 ...
- 2.2 Scala基础知识
一.基本数据类型和变量 1.基本数据类型 java中每一个数据类型都是一个类: scala没有自己定义String类型,String类型是从java.lang.String照搬的. 字面量(liter ...
- csp 201409-3 字符串匹配
问题描述: 很简单,判断给定串是否在目标串中出现.分区分大小写和不区分大小写两种情况. csp特点: csp的第三题一般是字符串的处理,c++的string类虽然不好用,但是掌握的话在考试的时候可能能 ...
- pugixml 读取
xml <?xml version="1.0" encoding="utf-8" ?> <ROOT> <COMPANY>Te ...