Lambda的简单使用

Lambda的使用规则

1.什么是lambda,它能够干什么?
Lambda在一定程度上简化了之前函数式接口的实现代码
2.使用范围
首先,这个接口是一个函数式接口,即这个接口有且仅有一个方法。这种接口可以使用@FunctionalInterface注解做检查
3.lambda的结构
(参数列表)->{方法体};
4.lambda的六种情况
1)无参数,无返回值

@FunctionalInterface
public interface Text {
    void get();
}
//在主方法中实现上面的接口
 Test test = ()->{System.out.println("这就是lamdba");};
2)有参数,无返回值
@FunctionalInterface
public interface Test {
    void get(String aaa);
}
//在主方法中实现上面的接口
Test test = (String name)->{System.out.println(name);};
//调用
test.get("风景");
3)如果遇到情况二,参数配型可以省略
@FunctionalInterface
public interface Test {
    void get(String name,int age);
}
//在主方法中实现上面的接口
Test test = (name, age)->{System.out.println("我是"+name+"今年"+age);};
test.get("李四",12);
4)如果只有一个参数可以省略()
@FunctionalInterface
public interface Test {
    void get(String name);
}
//在主方法中实现上面的接口
Test test = name->{System.out.println("我是"+name);};
test.get("李四");
5)如果方法实现只有一条执行语句{}可以省略
@FunctionalInterface
public interface Test {
    void get(String name);
}
Test test = name->System.out.println("我是"+name);
//在主方法中实现上面的接口
 test.get("李四");
6)如果方法实现只有一条执行语句,且这条语句时return时,如果想省略{}return必须不写,如果不省略,需要写return
@FunctionalInterface
public interface Test {
    String get(String name);
}
//在主方法中实现上面的接口
Test test = name -> { return name;};
//或者
Test test = name -> name;

总结:
完整版

@FunctionalInterface
public interface Test {
    String get(String name,int age);
}
//在主方法中实现上面的接口
Test test = (String name,  int age) -> {
            System.out.println("你好啊");
            return name;
        };
        test.get("李四",18);

Lamdba的内置函数式接口

在这里插入图片描述
1.Consumer consumer

public static void main(String[] args) throws InterruptedException {
    test(20,(Integer ppp) ->{
            System.out.println("你猜一猜age为"+ppp);
        });
    }

    public static void test(int age, Consumer<Integer> consumer){
        consumer.accept(age);
    }

2.Predicate predicate

public static void main(String[] args) throws InterruptedException {
        List list = new ArrayList<>();
        list.add(12);
        list.add(13);
        list.add(14);
        list.add(15);
        list.add(16);
        List res = choose(list, (Integer age) -> {
            if (age > 14) {
                return true;
            }
            return false;
        });
        System.out.println(res);
    }

//    模拟一个判断ages的方法
    public static List choose(List<Integer> ages, Predicate<Integer>  predicate){
        List<Integer> res = new ArrayList<>();
        for(int age: ages){
            //如果满足predicate设定的条件{调用时设定},就把这个年龄放入结果集中
            if (predicate.test(age)){
                res.add(age);
            }
        }
        return res;
    }

3.Function<String,Integer> function

 public static void main(String[] args) throws InterruptedException {
        String name = "里斯";
        int money = getMoney(name, x -> {
            return (int)(Math.random()*100);
        });
        System.out.println(name+"有"+money+"元");
    }
    
    public static int getMoney(String name, Function<String,Integer> fUnction){
        Integer money = function.apply(name);
        return money;
    }

4.这个不再举例,用法雷同

总结自尚硅谷宋红康老师的java基础视频

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值