JDK8 Lambda学习记录

“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

/**
 * 无参数、无返回值,以Runnable为例
 */
@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

// 调用 
Runnable r = () -> System.out.println("单个方法、无参数、无返回值");
new Thread(r).start();

// 最后简写
new Thread(() -> System.out.println("单个方法、无参数、无返回值")).start();

// 如果有多行加{}
new Thread(() -> {
    System.out.println("line1: 单个方法、无参数、无返回值");
    System.out.println("line2: 单个方法、无参数、无返回值");
}).start();
/**
 * 有参数、无返回值
 */
public interface LambdaDemo1 {
    void run(String hello);
}

// 执行LambdaDemo1方法
public class LambdaWrapDemo1 {
    void test(String value, LambdaDemo1 lambdaDemo1) {
        lambdaDemo1.run(value);
    }
}

// 调用
LambdaWrapDemo1 wrap = new LambdaWrapDemo1();
wrap.test("hello", (x) -> System.out.println(x));
/**
 * 有参数、有返回值
 */
LambdaWrapDemo1 lambdaWrapDemo1 = new LambdaWrapDemo1();
lambdaWrapDemo1.test("hello", (x) -> {
    System.out.println(x);
    return x;
});

jdk8 lambda常用语法

// 查询ID大于1的集合,并且打印出来
List<User> filterUsers = users.stream().filter(user -> user.getId() > 1).collect(Collectors.toList());
filterUsers.forEach(u -> System.out.println(u.getName()));

// 查询ID大于1的集合总数
users.stream().filter(user -> user.getId() > 1).count();

// 获取集合中NAME转成List
List<String> names = users.stream().map(User::getName).collect(Collectors.toList());
names.stream().forEach(x -> System.out.println(x));

// 获取集合第一个User如果为空跑抛出异常
User filterUser = users.stream().filter(user -> user.getId() == 4).findFirst().orElseThrow(() -> new NullPointerException("用户未找到"));

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值