中间有状态操作

Java8 新特性 Stream 练习实例

  中间操作,就是把数据处理成自己想要的类型,并且有状态操作,是在所有的数据基础上进行操作的。比如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() 中间有状态操作的更多相关文章

  1. 功能:Java8新特性steam流

    Java8新特性steam流 一.包装数据类型 @Test public void main22() { List<Integer> list = new ArrayList<Int ...

  2. Java8新特性一点通 | 回顾文件操作和watchService文件变更监视操作

    文件操作 WatchService 文件操作 今天重温了一些文件操作: - Files.list() 遍历文件和目录 //List all files and sub-directories usin ...

  3. Java8 新特性 Stream() API

    新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...

  4. Java8 新特性 Stream 练习实例

    练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...

  5. Java8 新特性 Stream 无状态中间操作

    无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...

  6. Java8 新特性 Stream 非短路终端操作

    非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...

  7. Java8 新特性 Stream 短路终端操作

    短路终端操作 Java8 新特性 Stream 练习实例 传入一个谓词,返回传为boolean,如果符合条件,则直接结束流. 匹配所有 allMatch 任意匹配 anymMatch 不匹配 none ...

  8. Java8 新特性之集合操作Stream

    Java8 新特性之集合操作Stream Stream简介 Java 8引入了全新的Stream API.这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同 ...

  9. 【Java8新特性】Stream API有哪些中间操作?看完你也可以吊打面试官!!

    写在前面 在上一篇<[Java8新特性]面试官问我:Java8中创建Stream流有哪几种方式?>中,一名读者去面试被面试官暴虐!归根结底,那哥儿们还是对Java8的新特性不是很了解呀!那 ...

随机推荐

  1. Winform 窗体皮肤美化_IrisSkin

    1 先把IrisSkin2.dll文件添加到当前项目引用(解决方案资源管理器->当前项目->引用->右键->添加引用,找到IrisSkin2.dll文件.....之后就不用我说 ...

  2. swift中文版和网站

    http://www.chinaz.com/swift/chapter2/01_The_Basics.html http://www.iphonetrain.com/video_info/290.ht ...

  3. 谈谈<? extends T> 和<? super T>理解

    项目中遇到<? extends T> 和<? super T> 这两者,来说说自己的理解.首先我们先了解什么是泛型 什么是泛型 泛型是在编译阶段一种防止错误对象输入的机制.编译 ...

  4. Linux系统下安装jdk及环境配置(两种方法)

    https://blog.csdn.net/qq_42815754/article/details/82968464 这里介绍两种linux环境下jdk的安装以及环境配置方法在windows系统安装j ...

  5. 使用BurpSuite做中转代理时候出现Failed to connect to www.xxx.com:443 的时候可能原因

    1.可能是BurpSuite没有设置好代理,需要BurpSuite需要进行设置如下图:

  6. 【洛谷P3756】[CQOI2017]老C的方块(最小割)

    洛谷 题意: 给出一个网格图类似于这样: 现在给出一个\(n*m\)大小的网格,之后会给出一些点,若某些点相连形成了如下的几个图案,那么就是不好的. 现在可以删去一些点,但删除每个点都有一些代价,问最 ...

  7. linux (07) redis详解

    一.redis持久化RDB 1.在配置文件中添加参数,开启rdb功能 redis.conf 写入 port 6379 daemonize yes logfile /data/6379/redis.lo ...

  8. luoguP2882Face The Right Way

    https://www.luogu.org/problem/P2882 题意 你有n头牛,每头牛有个朝向,你每次可以选择连续k头牛翻转,求k为多少时可以用最少的步骤将所有牛朝向变为正向 n≤5000 ...

  9. [网络] 在浏览器输入URL回车之后发生了什么

    目录 一  前言 二  URL解析 三  DNS域名解析 1  IP 地址 2  什么是域名解析 3  浏览器如何通过域名去查询 URL 对应的 IP 呢 4  小结 四  建立连接 1  TCP三次 ...

  10. django之分页器、多对多关系、form校验组件

    批量插入数据 bulk_create # 1.往书籍表中插入数据 1000 # for i in range(1000): # 这种插入方式 效率极低 # models.Book.objects.cr ...