大家好,我是程序员影子
一名致力于帮助更多朋友快速入门编程的程序猿
今天来聊一聊关于Java中的Lambda表达式的实践
一、Lambda表达式的简介
Lambda表达式是Java 8引入的一个新特性,它可以简化匿名内部类的写法,使得代码更加简洁。Lambda表达式适用于函数式接口,即只有一个抽象方法的接口。
demo:
public class LambdaExample {
public static void main(String[] args) {
// 使用Lambda表达式实现Runnable接口
Runnable runnable = () -> System.out.println("Hello, Lambda!");
new Thread(runnable).start(); // 输出: Hello, Lambda!
}
}
二、Lambda表达式的基本语法
Lambda表达式的基本语法是(参数列表) -> { 方法体 }
。如果没有参数,则可以省略参数列表的括号;如果方法体只有一条语句,则可以省略花括号和方法体的return
关键字。
demo:
public class LambdaSyntax {
public static void main(String[] args) {
// 无参数,无返回值的Lambda表达式
Runnable noArgs = () -> System.out.println("无参数Lambda表达式");
// 单个参数,无返回值的Lambda表达式
Consumer<String> singleArg = (arg) -> System.out.println("单个参数: " + arg);
// 多个参数,有返回值的Lambda表达式
BinaryOperator<Integer> multipleArgs = (a, b) -> a + b;
noArgs.run(); // 输出: 无参数Lambda表达式
singleArg.accept("Hello"); // 输出: 单个参数: Hello
System.out.println("两数之和: " + multipleArgs.apply(1, 2)); // 输出: 两数之和: 3
}
}
三、Lambda表达式与集合操作
Java 8为集合框架添加了新的方法,如stream()
、forEach()
等,这些方法可以与Lambda表达式结合使用,使得集合操作更加简洁高效。
demo:
import java.util.Arrays;
import java.util.List;
public class LambdaWithCollections {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 使用Lambda表达式和forEach方法遍历列表
numbers.forEach(number -> System.out.println(number)); // 输出: 1, 2, 3, 4, 5
// 使用Lambda表达式和stream API进行过滤和打印
numbers.stream()
.filter(number -> number % 2 == 0)
.forEach(System.out::println); // 输出: 2, 4
}
}
四、Lambda表达式与方法引用
方法引用是Java 8引入的另一个新特性,它可以进一步简化Lambda表达式。方法引用的语法是类名::方法名
或实例名::方法名
。
demo:
import java.util.function.BiFunction;
public class MethodReferences {
public static void main(String[] args) {
// 使用方法引用代替Lambda表达式
BiFunction<String, String, Integer> function = String::compareTo;
System.out.println(function.apply("Apple", "Banana")); // 输出: -1
}
}
五、Lambda表达式与自定义函数式接口
除了Java内置的函数式接口外,我们还可以定义自己的函数式接口,并在Lambda表达式中使用它们。
demo:
@FunctionalInterface
interface MyFunctionalInterface {
void performAction(String str);
}
public class CustomFunctionalInterface {
public static void main(String[] args) {
// 使用自定义函数式接口和Lambda表达式
MyFunctionalInterface myInterface = str -> System.out.println("自定义接口: " + str);
myInterface.performAction("Hello, Custom Functional Interface!"); // 输出: 自定义接口: Hello, Custom Functional Interface!
}
}
以上就是本次分享的所有内容,感兴趣的朋友点个关注呀,感谢大家啦~
更多Java | AI+编程玩法 的相关资料和源码请移步至公众号:程序员影子