Java Lambda 表达式
Java Lambda 表达式
Lambda 表达式是在 Java 8 中添加的。
Lambda 表达式是一小段代码,它接受参数并返回值。Lambda 表达式类似于方法,但它们不需要名称,并且可以直接在方法主体中实现。
句法
最简单的 lambda 表达式包含一个参数和一个表达式:
parameter -> expression
要使用多个参数,请将它们括在括号中:
(parameter1, parameter2) -> expression
表达式有限制。它们必须立即返回一个值,并且不能包含变量、赋值或语句,例如 if
或者for
为了执行更复杂的操作,可以使用带花括号的代码块。如果 lambda 表达式需要返回一个值,那么代码块应该有一个 return
陈述。
(parameter1, parameter2) -> { code block }
使用 Lambda 表达式
Lambda 表达式通常作为参数传递给函数:
例子
在中使用 lambda 表达式 ArrayList
的 forEach()
方法打印列表中的每个项目:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
}
}
亲自尝试 »
如果变量的类型是只有一个方法的接口,则 Lambda 表达式可以存储在变量中。Lambda 表达式应该具有与该方法相同数量的参数和相同的返回类型。Java 内置了许多此类接口,例如 Consumer
接口(位于java.util
列表使用的包。
例子
使用 Java 的 Consumer
将 lambda 表达式存储在变量中的接口:
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
numbers.forEach( method );
}
}
亲自尝试 »
要在方法中使用 lambda 表达式,该方法应具有一个以单方法接口为类型的参数。调用接口的方法将运行 lambda 表达式:
例子
创建一个以 lambda 表达式作为参数的方法:
亲自尝试 »interface StringFunction { String run(String str);
}public class Main { public static void main(String[] args) { StringFunction exclaim = (s) -> s + "!"; StringFunction ask = (s) -> s + "?"; printFormatted("Hello", exclaim); printFormatted("Hello", ask);
}public static void printFormatted(String str, StringFunction format) { String result = format.run(str); System.out.println(result);
}}
注意!以下文章 ↓ 是在人工智能的帮助下创建的!
Monika (ChatGPT) 的课程
Lambda 表达式是 Java 编程语言中允许函数式编程的强大功能。在本文中,我们将探讨什么是 Lambda 表达式、如何使用它以及它的优点。
什么是 Lambda 表达式?
Lambda 表达式是 Java 中定义小型匿名函数的一种方式。它们类似于方法,但不需要名称、返回类型或修饰符。相反,它们使用更简洁、更易读的语法来定义。
下面是一个 lambda 表达式的例子,它接受两个整数并返回它们的总和:
(整数 a,整数 b)->;a + b
此 lambda 表达式定义了一个接受两个整数的函数 (A 和b) 并返回其和。箭头 (->)将函数的参数与函数主体分隔开。
Lambda 表达式如何使用?
Lambda 表达式通常用于函数式接口,即只有一个抽象方法的接口。这些接口可以使用 Lambda 表达式来实现,这样可以使代码更干净简洁。
下面是一个函数接口的例子 计算器:
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
}
该接口只有一个抽象方法,称为 计算,它接受两个整数并返回一个整数。 @FunctionalInterface 注释是可选的,但最好将其包含在内以表明该接口旨在与 lambda 表达式一起使用。
现在,我们可以使用 lambda 表达式创建该接口的实例:
计算器 add = (a, b) -> a + b;
这将创建一个 计算器 实例调用添加 将两个整数相加。然后我们可以使用此实例执行计算:
int result = add.calculate(2, 3); // 结果 = 5
Lambda 表达式还可以与 Java 中的内置函数接口一起使用,例如 谓词, 消费者, 和 供应商.这些接口提供了对数据集合和数据流执行常见操作的标准方法。
Lambda 表达式的好处
与传统 Java 方法相比,Lambda 表达式有几个优点:
- 简明:Lambda表达式比传统方法更加简洁,使得代码更加容易阅读和编写。
- 可读性:Lambda 表达式可以通过减少简单操作所需的样板代码量来提高代码的可读性。
- 函数式编程:Lambda 表达式支持 Java 中的函数式编程,从而可以生成更具表现力和更强大的代码。
- 并行性:Lambda 表达式可以与并行流一起使用,以便更快、更高效地对大型数据集执行操作。
结论
Lambda 表达式是 Java 编程语言中一项强大的功能,它支持函数式编程,使代码更简洁、更易读。它们通常与函数式接口一起使用,对集合和数据流执行操作。通过理解 lambda 表达式,初学者可以用 Java 编写更具表现力和更强大的代码。
巴德(谷歌)的教训
Java 中的 Lambda 表达式
介绍
Lambda 表达式,也称为匿名函数,是在 Java 8 中引入的。它们是一种简洁而强大的代码编写方式,可用于各种情况。
什么是 lambda 表达式?
Lambda 表达式是一种未命名的函数。它由参数列表、箭头标记 (->) 和主体组成。主体可以是单个表达式或代码块。
如何编写 lambda 表达式
Lambda 表达式的语法如下:
(参数)-> 表达式
例如,以下 lambda 表达式接受一个类型为 整数 并返回参数的平方:
(int x)-> x * x
以下 lambda 表达式采用两个 int 类型的参数并返回参数的总和:
(整数 x,整数 y)-> x + y
如何使用 lambda 表达式
Lambda 表达式可以在代码中需要函数的任何地方使用。例如,您可以将 Lambda 表达式传递给方法参数,或使用它来初始化变量。
下面是如何将 lambda 表达式传递给方法参数的示例:
public void printSquares(List<Integer> numbers) {
numbers.forEach(x -> System.out.println(x * x));
}
此代码将打印 数字 列表。
下面是如何使用 lambda 表达式初始化变量的示例:
比较器<Integer>自然顺序比较器 = (x,y) -> x - y;
此代码初始化一个名为 自然顺序比较器 使用 lambda 表达式按升序比较两个整数。
使用 lambda 表达式的好处
与传统方法相比,Lambda 表达式有许多优点,包括:
- 简明:Lambda 表达式比传统方法更简洁。这可以使您的代码更具可读性且更易于维护。
- 灵活性:Lambda 表达式可用于传统方法不适用的各种情况。例如,Lambda 表达式可用于将函数作为参数传递给其他函数,或创建匿名内部类。
- 表现:在某些情况下,lambda 表达式的性能可能比传统方法更高。这是因为编译器通常可以内联 lambda 表达式,从而减少调用方法的开销。
使用 lambda 表达式的示例
以下是 Java 中如何使用 lambda 表达式的几个示例:
对数字列表进行排序:
List<Integer> numbers = Arrays.asList(1, 3, 5, 2, 4);
numbers.sort((x, y) -> x - y);
此代码将对 数字 按升序排列。
过滤元素列表:
List<String> names = Arrays.asList("Alice", "Bob", "Carol", "David");
List<String> shortNames = names.stream()
.filter(name -> name.length() < 5)
.collect(Collectors.toList());
此代码将创建一个名为的新列表 简称 包含所有名称名称 长度少于 5 个字符的列表。
创建回调函数:
public interface Callback {
void callback();
}
public void doSomething(Callback callback) {
// Do something...
callback.callback();
}
此代码定义了一个名为 打回来 它有一个名为打回来()。 这 做一点事() 方法采用打回来 对象作为参数并调用打回来() 当对象完成某件事时,它就会调用该方法。
以下代码显示如何使用 做一点事() 带有 lambda 表达式的方法:
执行某些操作(()->System.out.println(“你好,世界!”));
此代码将会在控制台上打印消息“Hello, world!”。
结论
Lambda 表达式是一种强大而灵活的工具,可用于编写更简洁、可读且高效的代码。如果您使用 Java 编程,我鼓励您学习如何使用 lambda 表达式。