lambda表达式很简单,包含三个部分,例如参数(方法参数),箭头运算符(->)和表达式(方法主体)。lambda表达式可分为三种类型:无参数lambda表达式,单参数lambda表达式和多参数lambda表达式。
没有参数的Lambda表达式
我们无需创建任何参数lambda表达式,然后以空括号开始表达式。
语法() -> {
//无参数的主体lambda
}
示例(无参数Lambda)import java.util.function.*;
import java.util.Random;
public class LambdaExpression1 {
public static void main(String args[]) {
NumberUtil num = new NumberUtil();
int randVal = num.getRandomValue(
() -> { // 无参数lambda
Random random = new Random();
return random.nextInt(500);
});
System.out.println("Lambda返回的值是: "+ randVal);
}
private static class NumberUtil {
public int getRandomValue(Supplier supplier) {
return supplier.get();
}
}
}
输出结果Lambda返回的值是: 144
单参数Lambda表达式
我们需要使用单个参数创建lambda表达式,然后使用单个参数的括号开始表达式。(p1) -> {
//单参数lambda的主体
}
示例(单个参数Lambda)import java.util.function.*;
public class LambdaExpression2 {
public static void main(String args[]) {
Validator validator = new Validator();
String city = "Hyderabad";
boolean isValid = validator.isDataValid(city,
(String info) -> { // 单参数lambda
String regx = "^[a-zA-Z0-9]*$";
return info.matches(regx);
});
System.out.println("lambda返回的值是: "+ isValid);
}
private static class Validator {
public boolean isDataValid(String data, Predicate predicate) {
return predicate.test(data);
}
}
}
输出结果lambda返回的值是: true
具有多个参数的Lambda表达式
我们需要创建具有多个参数的lambda表达式,然后以多个参数的括号开始该表达式。(p1,p2) -> {
//多参数lambda的主体
}
示例(多个参数Lambda)import java.util.function.*;
public class LambdaExpression3 {
public static void main(String args[]) {
Message m = new Message();
m.printStringInteger("Java", 75,
(String str, Integer number) -> { // 多参数lambda
System.out.println("值为: "+ str + " "+ number);
});
}
private static class Message {
public void printStringInteger(String str, Integer number, BiConsumer biConsumber) {
biConsumber.accept(str, number);
}
}
}
输出结果值为: Java 75