java 1.8新特性

1.Lambda 表达式(函数作为参数传递进方法中,免去了使用匿名方法的麻烦

(parameters) -> expression    或     (parameters) ->{ statements; }

 

Collection接口方法removeIf
boolean removeIf(Predicate<? super E> filter) 根据条件删除列表中元素返回boolean

ps:用for(Object item:List list)循环列表时,增加删除元素,会抛出 java.util.ConcurrentModificationException

       用for(int i = 0; i < list.size(); i++)时,增加删除元素,不会报错,但是由于i的增加和list.size()变化,如果没有i++,i--的话,列表结果和预期不同。

推荐使用: remove元素请使用Iterator方式

Predicate是个函数式接口

包括list排序使用的Comparator接口,都包含注解@FunctionalInterface,所以可以使用lambda表达式

2.接口的默认方法和静态方法

接口拥有默认方法,默认方法允许在不打破现有继承体系的基础上改进接口(可以实现,也可以不去实现)。该特性在官方库中的应用是:给java.util.Collection接口添加新方法,如stream()parallelStream()forEach()removeIf()

3.Optional

Optional目的是解决空指针,并且可以链式编程让代码更整洁

4.Streams

将集合或数组作为流处理

遍历    forEach()      peek()      区别在于:forEach()流结束,peek()返回一个新的流

list.forEach(System.out::print);
list.peek(e -> System.out.println("Filtered value: " + e)).map(String::toUpperCase).collect(Collectors.toList());

过滤   filter   

Stream<T> filter(Predicate<? super T> predicate);

流映射  map flatMap(流经过处理变为新的流)

缩减  reduce (聚合操作)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值