Lambda表达式方法引用举例

简介: Lambda表达式方法引用举例

Lambda表达式引入

假设我们现在有一个遍历集合List的需求

a.首先我们通过Lambda表达式的写法实现:

代码如下(示例):

public class MyLambdaTest {
    public static void main(String[] args) {
        List<String> stringList = Arrays.asList("肌肉猿","肌肉猿爱编程","程序员非晚");
        stringList.forEach(s -> {
            System.out.println(s);
        });
    }

程序运行结果:

b.我们通过匿名内部类的形式实现程序运行结果

public class MyLambdaTest2 {
    public static void main(String[] args) {
        List<String> stringList = Arrays.asList("肌肉猿","肌肉猿爱编程","程序员非晚");
        // 通过匿名内部类的形式替代Lambda表达式
        stringList.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
    }
}


程序运行结果:

上述代码分析:

foreach()方法是Iterable接口的一个默认方法,在下面的方法的参数列表中我们可以知道,该方法需要一个Consumer类型的参数,方法体的内容则是一个for循环,进行对每一个对象的便利,最终处理方法则是调用accept()方法。

default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

当我们继续查看Consumer的accept(T)方法,我们不难得出Consumer是一个函数式接口(该接口的详细讲解见我专栏里的文章有详解)。

目录
相关文章
|
6月前
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
65 1
|
6月前
|
编译器 程序员 数据安全/隐私保护
C++类成员解析:编译器如何识别和处理声明与定义(C++ 类的作用域以及查找顺序)
C++类成员解析:编译器如何识别和处理声明与定义(C++ 类的作用域以及查找顺序)
65 0
|
6月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
6月前
|
JavaScript 前端开发 Java
23、匿名类的排序、Lambda 表达式、方法引用
23、匿名类的排序、Lambda 表达式、方法引用
38 0
|
6月前
|
Java
【Java方法重载】 定义,使用,理解,示例解读
【Java方法重载】 定义,使用,理解,示例解读
132 0
|
6月前
|
Java
【Java代码】使用双冒号 :: 简洁代码及方法引用(静态方法+构造方法+实例方法+函数式编程举例)
【Java代码】使用双冒号 :: 简洁代码及方法引用(静态方法+构造方法+实例方法+函数式编程举例)
55 0
|
6月前
|
机器学习/深度学习 存储 搜索推荐
Java数组的定义与常用使用方法
Java数组的定义与常用使用方法
122 0
引用作为重载条件
引用作为重载条件
41 0
|
存储 Java 开发者
1.1 Lambda表达式的基础:Lambda表达式的定义与语法
1.1 Lambda表达式的基础:Lambda表达式的定义与语法
115 0