(int x, int y) -> x + y这个Lambda表达式接受两个整数参数 x 和 y,并返回它们的和。可以将这个Lambda表达式存储在一个变量中,例如:
IntBinaryOperator add = (int x, int y) -> x + y;这个代码创建了一个名为add的变量,它的类型是IntBinaryOperator,它接受两个整数参数并返回一个整数结果。该变量被初始化为一个Lambda表达式,该表达式实现了相同的功能,即将两个整数相加。
4.并行处理:Lambda表达式可以与Stream API一起使用,使Java程序更容易地进行并行处理。
11.集合操作
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream().map(String::toUpperCase).forEach(System.out::println);这里,使用了stream()方法将列表转换为一个流,然后使用map()方法将每个字符串转换为大写形式,最后使用forEach()方法将结果输出到控制台。
new Thread(() -> { // 执行后台任务 // ... // 通知主线程任务已完成 }).start();这里,使用了Java中的Thread类,并将一个Lambda表达式作为参数传递给它,该表达式将在新线程中执行后台任务。
button.addActionListener(event -> { // 处理按钮单击事件 // ... });这里,使用了Java中的ActionListener接口,并将一个Lambda表达式作为参数传递给它,该表达式将在用户单击按钮时执行。
List<Person> people = Arrays.asList(new Person("Alice", 25), new Person("Bob", 30), new Person("Charlie", 20)); Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge());这里,我们使用了Java中的Collections类的sort()方法,并将一个Lambda表达式作为参数传递给它,该表达式将比较两个Person对象的年龄并返回一个整数值,以指示它们的排序顺序。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); List<Integer> oddNumbers = numbers.stream().filter(n -> n % 2 != 0).collect(Collectors.toList());这里,使用了Java中的stream()方法将列表转换为一个流,然后使用filter()方法过滤掉其中的偶数,最后使用collect()方法将过滤后的结果转换为一个新的列表。
// 堆代码 duidaima.com List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); List<String> upperCaseNames = names.stream().map(String::toUpperCase).collect(Collectors.toList());这里,我们使用了Java中的stream()方法将列表转换为一个流,然后使用map()方法将每个字符串转换为大写形式,最后使用collect()方法将转换后的结果存储到一个新的列表中。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream().reduce(0, (a, b) -> a + b); System.out.println("Sum of numbers: " + sum);这里,使用了Java中的stream()方法将列表转换为一个流,并使用reduce()方法计算流中元素的总和。reduce()方法接受两个参数:起始值和一个BinaryOperator类型的Lambda表达式。Lambda表达式将两个元素相加并返回它们的和。在这个例子中,将起始值设置为0,表示计算从0开始的累加和。
interface MyInterface { int doSomething(int x, int y); } MyInterface myLambda = (x, y) -> x + y; int result = myLambda.doSomething(3, 4);这里,定义了一个名为myLambda的变量,它的类型是MyInterface,它接受两个整数参数并返回它们的和。然后,我们调用myLambda的doSomething()方法,并传递两个整数参数,得到它们的和并将结果存储在result变量中。
List<Integer> numbers = new ArrayList<>(); for (int i = 1; i <= 1000000; i++) { numbers.add(i); } long sum = numbers.parallelStream().mapToLong(i -> i * i).sum(); System.out.println("Sum of squares: " + sum);这里,使用了Java 8中的Parallel Streams API,它将列表转换为一个并行流,并使用mapToLong()方法计算每个元素的平方值,最后使用sum()方法将它们加起来得到总和。在此过程中,计算将在多个线程上并行执行,从而提高了计算效率。