Java | Lambda表达式的实践

大家好,我是程序员影子

一名致力于帮助更多朋友快速入门编程的程序猿

今天来聊一聊关于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+编程玩法 的相关资料和源码请移步至公众号:程序员影子 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值