Lambda函数式编程

简介: Java8所有的新特性基本基于函数式编程的思想,函数式编程给Java带来了注入了新鲜的活力。函数式编程其实并不是很难,小编在学习函数式编程时候刚开始一头雾水,最后仔细观察就发现了其中的小窍门,读了本篇文章如果还没有掌握,就算我输了
Java8所有的新特性基本基于函数式编程的思想,函数式编程给Java带来了注入了新鲜的活力。
函数式编程其实并不是很难,小编在学习函数式编程时候刚开始一头雾水,最后仔细观察就发现了其中的小窍门,读了本篇文章如果还没有掌握,就算我输了

函数式编程

一、Lambda表达式

注意: 以下方法都可以使用表达式来进行缩写

我们来看Java中如何来定义一个方法

1. 语法

()->{}

其中小括号里面可以放入参,大括号就是方法体,里面也允许有返回值。

当方法体中只有返回值而没有其他语句时候,大括号和 return 关键字都可以省略不写。

2. 方法引用

只要用.引用不报错的,都可以将.换成:

类型 语法
1、引用静态方法 ClassName::staticMethodName
2、引用构造函数 ClassName::new
3、引用特定类型的实例方法 ClassName::instanceMethodName
4、引用特定对象的实例方法 objectName::instanceMethodName

二、Java8新增函数式接口

1. Predicate接口

Predicate 接口只有一个参数,返回boolean类型。该接口包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与,或,非)

Predicate<String> predicate = (s) -> s.length() > 0;

根据前面的语法我们知道小括号里面可以放入参,大括号里面放出参,当大括号里面只有返回值时候,大括号和 return 关键字也可以省略。如上。

2. Function 接口

Function 接口有一个参数并且返回一个结果,并附带了一些可以和其他函数组合的默认方法(compose, andThen):

Function<Integer, Integer> function = (x) -> 2 * x;

同理,这个接口有一个入参和出参,如果返回体重不包含其他逻辑,只有一个返回值,大括号和 return 关键字也可以省略。如上。

3. Supplier 接口

Supplier 接口返回一个任意范型的值,和Function接口不同的是该接口没有任何参数

public class Main{
    public static void main(String[] args) {
        //构造方法
        Supplier<Main> supplier = () -> new Main();
        Supplier<Main> mainSupplier = Main::new;
        Supplier<Main> mainSupplier1 = Main::staticMethod;
    }
    private static Main staticMethod() {
        return new Main();
    }
}

因为没有入参,所以小括号里面什么都不用写。当遇到这种情况,同样可以用上面其他两种来替换

4. Consumer 接口

Consumer 是一个只有入参,但是无出参的接口。

public class Main {
    public static void main(String[] args) {
        List<String> dataList = Arrays.asList("1", "2");

        //特定类的静态方法
        dataList.forEach(Main::staticMethod);
        dataList.forEach((x) -> System.out.println(x));
        dataList.forEach(System.out::println);

    }
    private static void staticMethod(String name) {
        System.out.println("对象静态方法引用:" + name);
    }
}

三、快速记忆

虽然新增的函数式接口并不多,但是想要一次性死记住,还是有一点点的难度。小编的学习方式是
理解这记忆。

类型 简记
1、Predicate 条件类型
2、Supplier 无入参,有出参
3、Function 有入参,有出参
4、Consumer 有入参,无出参
相关文章
|
5月前
|
Scala 开发者
Scala中的模式匹配与高阶函数:探索强大的编程范式
【7月更文挑战第11天】Scala中的模式匹配和高阶函数是两种极其强大的特性,它们不仅提升了代码的表达力和可读性,还使得开发者能够编写出更加灵活和可重用的解决方案。通过
|
7月前
|
存储 并行计算 算法
Lambda表达式与函数式工具
【5月更文挑战第10天】探索Python的函数式编程:Lambda表达式用于快速定义匿名函数,如求平方;函数式工具如`map()`、`filter()`、`reduce()`简化代码。通过实例展示在数据处理、并行计算中的应用,如匿名函数与`map()`结合实现列表元素运算,`filter()`筛选条件,`reduce()`做累积计算。不可变性和纯函数提升代码可靠性,结合面向对象编程实现代码复用。利用`functools`、`itertools`等模块及第三方库如`toolz`增强函数式编程能力。函数式编程适用于数据处理、并行计算,优点在于清晰、高效和易于维护。
37 0
|
7月前
|
机器学习/深度学习 开发框架 .NET
C# 中的 Lambda 表达式:一种简洁而强大的编程工具
【1月更文挑战第6天】在现代编程中,Lambda 表达式已经成为一种非常流行的编程范式。C# 作为一种功能强大的、面向对象的编程语言,自然也不例外。Lambda 表达式在 C# 中提供了一种简洁、灵活的方式来表示匿名函数。这些函数可以被用作委托或表达式树类型,从而在各种不同的上下文中使用。
|
JavaScript 前端开发 Java
函数式编程入门:理解纯函数、高阶函数与柯里化
函数式编程入门:理解纯函数、高阶函数与柯里化
171 0
|
Oracle JavaScript Java
函数式编程与Lambda表达式
函数式编程与Lambda表达式
|
Java Kotlin
Kotlin中匿名函数(又称为Lambda,或者闭包)和高阶函数的详解
Kotlin中匿名函数(又称为Lambda,或者闭包)和高阶函数的详解
140 0
|
Java 编译器 API
4.3 Lambda表达式的性能与限制:在某些情况下避免使用Lambda表达
4.3 Lambda表达式的性能与限制:在某些情况下避免使用Lambda表达
1360 0
|
Java 开发者
lambda让代码更优雅
Lambda表达式是Java 8中引入的一个重要特性,它允许开发者以更简洁的方式编写匿名函数,使得代码更加紧凑和易读。Lambda表达式是函数式编程的一种体现,可以将函数作为方法的参数传递,并且可以使用更简洁的语法实现函数式接口(只有一个抽象方法的接口)的实例化。Lambda表达式的语法形式为 (参数列表) -> {表达式或语句块}。
81 0
|
安全 Java 数据库
Lambda表达式和函数式编程
Lambda表达式和函数式编程
190 4
Lambda表达式和函数式编程
|
分布式计算 Shell API
scala函数式编程与高阶函数
谈到编程方式有指令式编程、过程化编程、函数式编程,函数式编程在使用时主要的思想就是把运算过程写成一些列嵌套的函数调用。把一组数据通过函数实现运算转化成另一组数据。函数式编程这种方式在我们将来开发Spark、Flink的业务代码时会大量使用。下面列出了一些我们经常使用的进行函数式编程的Iterable trait(可迭代特质)方法。
89 0