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<Integer> supplier) {
return supplier.get();
}
}
}Lambda返回的值是: 144
我们需要使用单个参数创建lambda表达式,然后使用单个参数的括号开始表达式。
(p1) -> {
//单参数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<String> predicate) {
return predicate.test(data);
}
}
}lambda返回的值是: true
我们需要创建具有多个参数的lambda表达式,然后以多个参数的括号开始该表达式。
(p1,p2) -> {
//多参数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<String, Integer> biConsumber) {
biConsumber.accept(str, number);
}
}
}值为: Java 75