java:Lambda函数式编程

2023-12-18 20:03:27

作为一个前端同学,今天惊叹的发现,原来 java 也可以使用函数式编程,赶紧来看看怎么玩

简介

当Java 8引入Lambda表达式和函数式编程特性时,它开启了一个全新的编程范式。这些功能使得Java语言更加现代、灵活,并支持更为函数式的编程方式。在这篇博客中,我们将深入探讨Java中的Lambda表达式和函数式编程。

语法

(parameters) -> expression

parameters表示参数列表,expression表示表达式。你要是前端的话看一眼就懂了,接下来我整一些示例给大家看看

示例:简单

hello world

new Thread(() -> System.out.println("Hello, Lambda!")).start();

相加

// 自定义函数式接口
interface MyFunction {
    void apply(int x, int y);
}

// 使用Lambda表达式实现
MyFunction add = (x, y) -> System.out.println("Sum: " + (x + y));

示例:筛选年龄大于 25 的人员

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

class Scratch {
    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 25));
        people.add(new Person("Bob", 30));
        people.add(new Person("Charlie", 22));
        people.add(new Person("David", 35));

        // 使用 Lambda 表达式筛选年龄大于 25 的人员
        List<Person> filteredList = filterPeople(people, person -> person.getAge() > 25);
        System.out.println(filteredList);
    }

    // 使用函数式接口 Predicate 进行筛选
    private static List<Person> filterPeople(List<Person> people, Predicate<Person> predicate) {
        List<Person> filteredList = new ArrayList<>();
        for (Person person : people) {
            if (predicate.test(person)) {
                filteredList.add(person);
            }
        }
        return filteredList;
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

结果

[Person{name='Bob', age=30}, Person{name='David', age=35}]

Lambda表达式与前端箭头函数的对比

// Lambda表达式
Runnable runnableLambda = () -> System.out.println("Hello, Lambda!");
// 箭头函数
const greet = () => console.log("Hello, Arrow Function!");

基本就是箭头的样式不一样

函数式编程的优势

  1. 代码简洁
    Lambda表达式让代码变得更加紧凑,消除了冗长的语法,提高了代码的可读性。

  2. 增强可读性
    函数式编程强调表达式的含义,Lambda表达式使得代码逻辑更为清晰,提高可读性。

  3. 更灵活的编程方式
    Lambda表达式支持函数作为一等公民,使得高阶函数的编写变得更为灵活。

文章来源:https://blog.csdn.net/weixin_43972437/article/details/135068804
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。