java中lambda表达式用法
时间: 2023-02-08 07:43:28 浏览: 124
Java 中的 lambda 表达式允许您使用简洁的语法定义一个函数式接口的实例。这类似于匿名内部类,但更简洁。
语法:
```
(参数列表) -> {函数体}
```
例如,下面是使用 lambda 表达式来实现 Java 中 `Runnable` 接口的示例:
```
Runnable runnable = () -> System.out.println("Hello World!");
```
另一个例子是在 Collections 类中使用 lambda 表达式来进行排序:
```
List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
Collections.sort(names, (a, b) -> a.compareTo(b));
```
注意, Lambda 表达式只能用于函数式接口。而函数式接口是指只有一个抽象方法的接口,在 Java8 中还引入了 @FunctionalInterface 注解来强制实现这种接口。
相关问题
java中lambda表达式
Lambda表达式是Java 8中引入的一个新特性,它可以被视为一种匿名函数,它没有名称,但有参数列表、函数体和可能的返回类型。Lambda表达式是一种简便的语法形式,用于表示Java中的函数式接口。
Lambda表达式的语法形式如下:
```
(parameters) -> expression
```
或者
```
(parameters) -> { statements; }
```
其中,parameters表示参数列表,可以为空或包含一个或多个参数;箭头->用于分隔参数列表和Lambda表达式的主体;expression或statements表示Lambda表达式的主体,可以是一个表达式或一组语句。
以下是一些Lambda表达式的示例:
```
// 无参数的Lambda表达式
() -> System.out.println("Hello, world!");
// 一个参数的Lambda表达式
(x) -> x * x
// 多个参数的Lambda表达式
(x, y) -> x + y
// 包含多条语句的Lambda表达式
(x, y) -> {
int sum = x + y;
System.out.println("The sum is " + sum);
return sum;
};
```
Lambda表达式通常与Java中的函数式接口一起使用,函数式接口是只有一个抽象方法的接口。例如,以下是一个函数式接口及其使用的示例:
```
@FunctionalInterface
interface MyFunction {
int apply(int x, int y);
}
MyFunction add = (x, y) -> x + y;
MyFunction subtract = (x, y) -> x - y;
int result1 = add.apply(2, 3); // result1 = 5
int result2 = subtract.apply(5, 2); // result2 = 3
```
在此示例中,我们定义了一个带有一个抽象方法apply的函数式接口MyFunction,并使用Lambda表达式来实现该接口的单个方法。然后,我们创建了两个MyFunction实例来执行加法和减法。
Java中Lambda表达式
Lambda表达式是Java 8中引入的一个新特性,它可以用更简洁的语法来表示匿名函数。Lambda表达式通常用于函数式接口(只有一个抽象方法的接口),可以将Lambda表达式看作是该抽象方法的一种实现。
Lambda表达式的语法格式如下:
(parameter1, parameter2, …) -> { code }
其中,参数列表和代码块都是可选的。如果参数列表为空,可以省略圆括号;如果代码块只有一行,可以省略花括号和分号,这种情况下会自动将代码的返回值作为Lambda表达式的返回值。
Lambda表达式可以用于各种场景,例如:
1. 集合的遍历
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(str -> System.out.println(str));
2. 线程的创建
new Thread(() -> {
// do something
}).start();
3. 排序
List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));
Lambda表达式可以使代码更加简洁、易读,提高编程效率。但是,在使用Lambda表达式时需要注意一些细节,例如Lambda表达式中不能使用return语句返回值,Lambda表达式中不能访问非final变量等。
阅读全文