JDK8之Lambda表达式

概念:允许把函数作为一个方法的参数(函数作为参数传递到方法中)

函数式接口 变量名 = (参数1,参数2)->{
            //方法体
}

注意事项:

1.形参列表的数据类型会自动判断

2.如果形参列表为空,只需保留()

3.如果形参只有一个,()可以省略,只要参数名字即可

4.如果执行语句只有一句,且无返回值,{}可以省略

5.若有返回值,仍想省略{},return也省略。保证执行语句只有一句

6.lambda表达式不会生成单独的内部类文件

7.lambda访问局部变量时,变量要修饰final,如果没加,会自动添加。

函数式接口:

1.如果一个接口只有一个抽象方法,则该接口称为函数式接口

2.为了保证接口达到要求,可以添加@FunctionalInterface注解

四个核心函数式接口:

Consumer<T>消费型接口 void accept(T t):

第一种:通过自己写表达式,自己调自己
Consumer<String> cs = (e)->System.out.println("今天天气:" + e);
cs.accept("晴");

第二种:通过方法形参中写函数型接口,调用时写Lambda表达式
方法调用:m(1000.0, (s)-> {System.out.println("今天挣了" + s +"块");});
public static void m(Double b,Consumer<Double> cb){
          cb.accept(b);//方法执行
}

Supplier<T> 供给型接口  T  get();:

第一种:自己写,自己调
Supplier<Integer> sp = ()->new Random().nextInt(200);
int nums = sp.get();
System.out.println(nums);

第二种:调方法()
方法调用:int add = m(50, ()->{ 
                      int nums = 0;
                      for(int i = 1;i <= 50;i++){
                          nums += i;
                      }return nums;});
public static int m(int a ,Supplier<Integer> sp){
return sp.get(); //方法执行
}

Function <T,R>函数型接口   R apply(T t);:

第一种:自己写,自己调:
Function<String,String> fc = (e)->e.toLowerCase();
String message = fc.apply("HELLO");

第二种:调方法;
调用方法:String message = m("hello", (e)->e.toUpperCase());
public static String m(String str ,Function<String, String> fc){
return fc.apply(str);//方法执行
}

Predicate<T> 断言型接口   boolean test(T t);:

List li = new ArrayList();
li.add("光芒");
li.add("公民");
li.add("阿杰");
li.add("阿辉");

第一种:自己写自己调
Predicate<String> pd = (e)->e.startsWith("阿");
List<String> newli = new ArrayList<String>();
for (String str : li) {
if(pd.test(str)){
newli.add(str);
}
}

第二种:传一个集合,调方法
调用方法:List<String> f = m(li, (e)-> e.startsWith("阿"));
public static List<String> m(List<String> li,Predicate<String> pc){
       List<String> newLi = new ArrayList<String>();
       for (String string : li) {
            if(pc.test(string)){//调用Predicate接口中的方法,返回内容作为条件判断
            newLi.add(string);
     }       }
       return newLi;}

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值