Lambda表达式

一、lambda的直观形式:

()->{}

(参数列表)->{方法体代码}

二、关于Lambda表达式的理解

1、函数编程式思想,不关注对象,更关注对数据进行操作

2、lambda表达式是对匿名内部类的优化

三、Lambda省略规则

1、参数类型可以省略

2、小括号内参数只有一个,小括号可以省略

3、大括号内方法体只有一句代码时,return和大括号可以省略

四、代码展示

package com.atxiaoyao.lambda;

public class LambdaDemo01 {
    public static void main(String[] args) {
/*        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("中华人民共和国");
            }
        }).start();*/

        new Thread(()->{
            System.out.println("中华人民共和国");
        }).start();
    }
}
package com.atxiaoyao.lambda;

import java.util.function.IntBinaryOperator;

public class LambdaDemo02 {

    public static void main(String[] args) {
        // 原始结构
/*        int i = calculateNum(new IntBinaryOperator() {
            @Override
            public int applyAsInt(int a, int b) {
                return a + b;
            }
        });
        System.out.println("i = " + i);*/

        // lambda表达式
/*        int i = calculateNum((int a, int b) -> {
            return a + b;
        });
        System.out.println(i);*/

        // 进一步简化
        int i = calculateNum((a, b) -> a + b);
        System.out.println("i = " + i);


    }
    
    public static int calculateNum(IntBinaryOperator operator) {
        int a = 10;
        int b = 20;
        return operator.applyAsInt(a, b);
    }
}
package com.atxiaoyao.lambda;

import java.util.function.IntPredicate;

public class LambdaDemo03 {

    // 函数编成关注的是具体的参数列表和方法体  不需要关注方法名是什么

    public static void printNum(IntPredicate predicate){
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        for (int i : arr) {
            if (predicate.test(i)){
                System.out.println(i);
            }
        }
    }

    public static void main(String[] args) {

/*        printNum(new IntPredicate() {
            @Override
            public boolean test(int value) {
                return value%2 == 1;
            }
        });*/

        // lambda表达式
        printNum(value -> value%2 == 0);

    }
}
package com.atxiaoyao.lambda;

import java.util.function.Function;

public class LambdaDemo04 {

    public static <R> R typeConver(Function<String,R> function){
        String str = "1234";
        R result = function.apply(str);
        return result;
    }

    public static void main(String[] args) {
/*        Integer integer = typeConver(new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                return Integer.parseInt(s);
            }
        });
        System.out.println("integer = " + integer);*/

        // Lambda表达式
        Integer integer = typeConver(s ->
                Integer.parseInt(s)
        );
        System.out.println("integer = " + integer);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值