java8新特新Lambda表达式

Lambda表达式语法介绍及示例

  1. Lambda表达式的基本语法

Lambda表达式的基本语法为:(parameters) -> expression或(parameters) -> { statements; }

其中,parameters表示Lambda表达式的参数列表,可以为空或包含一个或多个参数;expression或{ statements; }表示Lambda表达式的主体,可以是一个表达式或一组语句块。

下面是一个简单的Lambda表达式示例:

// Lambda表达式示例
() -> System.out.println("Hello, Lambda!");
  1. Lambda表达式的参数列表

Lambda表达式的参数列表可以为空或包含一个或多个参数,多个参数之间用逗号分隔。如果参数列表为空,则可以省略参数括号。

下面是一个Lambda表达式的参数列表示例:

// Lambda表达式的参数列表示例
(name, age) -> System.out.println("Name: " + name + ", Age: " + age);
  1. Lambda表达式的主体

Lambda表达式的主体可以是一个表达式或一组语句块。如果主体是一个表达式,则可以省略大括号和return关键字;如果主体是一组语句块,则必须使用大括号,并且需要使用return关键字返回结果。

下面是一个Lambda表达式的主体示例:

// Lambda表达式的主体示例
// 表达式主体
x -> x * x
// 语句块主体
(x, y) -> {
    int sum = x + y;
    return sum;
}
  1. Lambda表达式的类型推断

Lambda表达式的类型可以由编译器根据上下文自动推断出来,也可以显式指定类型。

下面是一个Lambda表达式的类型推断示例:

// Lambda表达式的类型推断示例
// 自动推断类型
(x, y) -> x + y
// 显式指定类型
(String x) -> x.length()
  1. Lambda表达式的方法引用

Lambda表达式可以使用方法引用来简化代码,方法引用可以引用已有的方法或构造函数。

下面是一个Lambda表达式的方法引用示例:

// Lambda表达式的方法引用示例
// 引用已有的方法
System.out::println
// 引用构造函数
ArrayList::new

以下是Lambda的10个使用案例

  1. 使用Lambda表达式实现Runnable接口
Runnable r = () -> System.out.println("Hello, World!");
new Thread(r).start();
  1. 使用Lambda表达式实现Comparator接口
List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));
  1. 使用Lambda表达式实现Function接口
Function<Integer, Integer> square = x -> x * x;
System.out.println(square.apply(5)); // 输出25
  1. 使用Lambda表达式实现Predicate接口
Predicate<String> startsWithA = s -> s.startsWith("A");
System.out.println(startsWithA.test("Apple")); // 输出true
  1. 使用Lambda表达式实现Consumer接口
Consumer<String> printUpperCase = s -> System.out.println(s.toUpperCase());
printUpperCase.accept("hello"); // 输出HELLO
  1. 使用Lambda表达式实现Supplier接口
Supplier<Double> random = () -> Math.random();
System.out.println(random.get()); // 输出一个随机数
  1. 使用Lambda表达式实现UnaryOperator接口
UnaryOperator<Integer> increment = x -> x + 1;
System.out.println(increment.apply(5)); // 输出6
  1. 使用Lambda表达式实现BinaryOperator接口
BinaryOperator<Integer> add = (x, y) -> x + y;
System.out.println(add.apply(5, 3)); // 输出8
  1. 使用Lambda表达式实现Stream的map操作
List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> upperCaseList = list.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
System.out.println(upperCaseList); // 输出[APPLE, BANANA, ORANGE]
  1. 使用Lambda表达式实现Stream的filter操作
List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
System.out.println(filteredList); // 输出[apple]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AcerMr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值