java steam_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 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

*/

细节决定成败!

个人愚见,如有不对,恳请扶正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值