lambda表达式与常用方法

1、什么是lambda,是java8新的特性,是一个匿名函数,可以非常简洁的实现接口。                                                                                     lambda对接口的要求:接口里面的抽象方法只能够存在一个,或者被@FunctionalInterface修饰接口,或者接口中有一个抽象方法,其他的都是dafault或者静态方法。

2、Lambda定义的三个语法:                                                                                                                                                                                         (params) -> 单行语句;                                                                                                                                                                                     (params) ->表达式;                                                                                                                                                                                         (params) ->{多行语句};                                                                                                                                                               lambda需要关注方法的参数列表和方法体,()描述参数列表;{}描述方法体;->lambda运算符,gos to                                                        无参无返回:Interface inter1 = () -> {System.out.println(无参无返回")} 

3、精简:lambda表达式中参数的类型可以省略,因为在接口中的方法已经定义了类型; 如果参数的数量只有一个,可以省略小括号;方法体中只有一条语句,此时大括号可以省略,如果该语句是返回语句,省略大括号的同时省略return。

   例如  Interface inter1 = x -> System.out.println("无参无返回")                                                                                                                                    Interface inter1 = x -> change(x) 

4、普通方法引用  Interface inter1 = x-> Sysclass::change                                                                                                                                   构造方法引用  Interface inter1 = Sysclass::new(无参构造方法)返回Sysclass对象

5、常用的lambda表达式:

1)  new Thread( () -> System.out.println("In")).start();  实现了Runnable接口中的run()方法,该方法没有参数,大括号内的表达式就是该run方法的实现,如上面3所说,这个前提就是接口里面的抽象方法只能够存在一个。

2)stream流Java 8 中的stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation),生成流的两种方式:stream()− 为集合创建串行流。parallelStream() − 为集合创建并行流。

3)map用法接受一个函数作为参数,并将函数应用到每一个元素上,返回新的元素list. 

获取list中每个元素的name属性组成一个新的list。

4)sorted()用法:                                                                                                                                                                                       sorted()产生一个新流,其中按自然顺序排序;sorted(Comparator comp)产生一个新流,其中按比较器顺序排                                             例如:Comparator comparator = (String o1, String o2) -> o1.compareTo(o2);  按升序排序

array.stream().map(testCode1 -> testCode1.getAge()).sorted(comparator).foreach(System.out::println);

5)match相关的方法:

allMatch(Predicate p):检查是否匹配所有元素

如:Boolean isMatch = array.stream().allMatch(t -> t.getAge() > 23),是否有年龄大于23的元素,返回的是布尔类型。

6)reduce相关方法:将元素中的值以某种方式连接起来

例如:Optional result = array.stream().map(e -> e.getAge()).reduce((x, y) -> x + "," + y);  输出:24,25

7)collect(Collector c)将流转换为其他形式。接收一个Collector接口的实现,用于给Stream中元素做汇总的方法

注:摘自:https://www.cnblogs.com/maikucha/p/8435906.html

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值