Java-lambda表达式入门看这一篇就够了

2023-12-11java编程
3

Java-lambda表达式入门看这一篇就够了

什么是Lambda表达式?

Lambda表达式是Java 8的新特性,它允许我们以更简洁的方式编写匿名内部类,使代码更易读易写。Lambda表达式本质上就是一个函数,不需要写函数名,可以传递到需要函数式接口的任何地方。Lambda表达式由参数列表、箭头符号和函数体组成,其中箭头符号可以理解为“传递至”的意思,函数体可以是表达式或语句块。

Lambda表达式的语法

Lambda表达式的语法如下:

(parameter1, parameter2, ..., parameterN) -> { 
    statement1; 
    statement2; 
    ...
    return statementM;
}

其中parameter1, parameter2, ..., parameterN是传递到Lambda表达式中的参数列表,多个参数之间用逗号隔开,如果没有参数则可以写成()

->是Lambda表达式中的箭头符号,用于将参数列表和函数体隔开。

{ statement1; statement2; ... return statementM; }是Lambda表达式的函数体,可以是一个语句块或简单的表达式。

在Lambda表达式中,参数的类型是可以省略的,Java编译器会根据上下文自动推导出参数类型。如果只有一个参数,则参数列表中的括号也可以省略。

示例1:

// 传统的匿名内部类示例
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello World!");
    }
}).start();

// Lambda表达式示例
new Thread(() -> System.out.println("Hello World!")).start();

示例2:

// 传统的匿名内部类示例
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Collections.sort(list, new Comparator<Integer>() {
    @Override
    public int compare(Integer a, Integer b) {
        return a.compareTo(b);
    }
});

// Lambda表达式示例
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Collections.sort(list, (a, b) -> a.compareTo(b));

在示例1中,我们可以看到Lambda表达式的语法相比于传统的匿名内部类简单明了,更易读易写。

在示例2中,我们使用Lambda表达式来对一个list进行排序,同样可以看到Lambda表达式可以大大简化代码量,使程序看起来更加简洁。

Lambda表达式的使用

Lambda表达式的主要使用场景是函数式接口,即只有一个抽象方法的接口,Lambda表达式中的函数体就是这个接口的具体实现。

Java 8为我们提供了很多内置的函数式接口,如PredicateConsumerFunctionSupplier等,我们可以根据实际需求来选择合适的函数式接口。

示例3:

// Predicate函数式接口示例
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenList = filter(list, n -> n % 2 == 0);

public static List<Integer> filter(List<Integer> list, Predicate<Integer> predicate) {
    List<Integer> resultList = new ArrayList<>();
    for (Integer i : list) {
        if (predicate.test(i)) {
            resultList.add(i);
        }
    }
    return resultList;
}

在示例3中,我们使用了Java 8内置的Predicate函数式接口,它表示一个判断条件,并且只有一个test方法,用于判断传入的参数是否符合条件。我们可以通过Lambda表达式来创建一个Predicate对象,然后将它传递给filter函数,获得符合条件的列表。

总结

Lambda表达式是Java语言中一个非常有用的特性,它可以使我们的代码更加简洁易读,而且能够与函数式接口紧密结合,为我们提供更加灵活的编程方式。掌握Lambda表达式是每一个Java开发人员的必备技能之一。

The End

相关推荐

一文带你掌握Java8中Lambda表达式 函数式接口及方法构造器数组的引用
Lambda表达式是Java 8中引入的新特性之一,它是一个匿名函数,可以捕获参数并表现为一个代码块,而不像方法一样需要一个固定的名称。它主要用于传递行为或代码块以及事件处理等操作。...
2023-12-11 java编程
30

基于Java 谈回调函数
下面为您详细讲解基于Java的回调函数。...
2023-12-11 java编程
21

java equals函数用法详解
在Java中,equals()是用来比较两个对象是否相等的函数。equals()方法是Object类中的方法,因此所有Java类都包含equals()方法。在默认情况下,equals()方法比较对象的引用地址是否相同,即两个对象是否是同一个实例。但是,我们可以覆盖equals()方法,来定义自...
2023-12-11 java编程
63

JavaWeb学习笔记分享(必看篇)
JavaWeb是Java在Web领域的应用,是目前非常热门的技术之一。但是JavaWeb涉及到的技术非常广泛,初学者很容易迷失方向。本文总结了JavaWeb的基础知识,为初学者提供了一份学习笔记分享,希望能够帮助大家快速入门。...
2023-12-11 java编程
8

Java中replace、replaceAll和replaceFirst函数的用法小结
在Java编程中,字符串操作是很常见的,而替换字符串是其中常用的操作之一。Java提供了三种函数用于替换字符串:replace、replaceAll和replaceFirst。这篇文章将为您详细介绍它们的用法。...
2023-12-11 java编程
121

基于Java中进制的转换函数详解
进制是数学中一种表示数值大小的方法,常见的进制有10进制、2进制、16进制等。...
2023-12-11 java编程
45