【java】jdk8的一些新特性

1. stream().peek(item->{})

与stream().forEach功能类似,不同点在于peek返回原始的stream()流,因而可以反复调用,forEach没有返回值

 sream().peek(item->{}).peek(item->{})

2. parallelStream()

和stream()的不同是一个parallelStream流是多线程任务调度,stream()是串行任务调度。因为是多线程,parallelStream在某些情况下比stream()效率更高
补充: 由于parallelStream()是并行流,不适合多个循环之间存在逻辑关联的场景,使用之前需要慎重考虑。

3. sort 和Comparator用来排序

sort是排序算法,Comparator是比较器,可以用来比较日期等
java8的sorted排序用法和sort差不多,有一个不同点在于stream().sorted()不会修改原列表,而是返回一个新的数组,但是sort方法的排序会修改原列表,无返回值。

List<CmInfo> result = cmDao.selectCmInfo();
// 对result按照modifyDatetime日期排序,排序规则是时间较晚的在前。其中reversed是指倒序
result.sort(Comparator.comparing(CmInfo::getModifyDatetime).reversed());

4. Optional的使用

// 获取oldStock中的stockIssuedDate字符串,并将其格式化。其中oldStock可能为空
String oldStockIssuedDateString = Optional.ofNullable(oldStock)
.map(CMCustomerStock:: getStockIssuedDate)
.map(item->item.format(dateTimeFormatter))
.orElse("");

这里如果oldStock为空,则后边的map均不执行,直接返回空字符串。
第一个map是单对象映射,和stream()流的多对象映射返回值不一样。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值