欢迎访问宙启技术站
智能推送

Java函数式编程概念及示例代码

发布时间:2023-06-15 19:32:12

Java函数式编程是一种编程范式,它将函数作为 类对象,使得可以像操作数据一样操作函数。它的核心概念是Lambda表达式和函数式接口。Lambda表达式是一个匿名函数,它可以被赋值给一个变量,作为参数传递给函数或方法,也可以作为返回值返回。函数式接口是只包含一个抽象方法的接口,它可以作为Lambda表达式的类型,而 Java 的Lambda表达式的类型必须是函数式接口。

示例代码:

1. Lambda表达式示例:

// 定义一个接口
interface MathOperation {
    int operate(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        // 使用Lambda表达式实现加法操作
        MathOperation addition = (int a, int b) -> a + b;
        // 使用Lambda表达式实现乘法操作
        MathOperation multiplication = (a, b) -> a * b;

        // 输出结果
        System.out.println("10 + 5 = " + addition.operate(10, 5));
        System.out.println("10 x 5 = " + multiplication.operate(10, 5));
    }
}

2. 函数式接口示例:

@FunctionalInterface
interface GreetingService {
    void sayHello(String name);
}

public class Main {
    public static void main(String[] args) {
        // 使用Lambda表达式实现GreetingService接口
        GreetingService greetingService = (name) -> System.out.println("Hello, " + name);

        // 输出结果
        greetingService.sayHello("world");
    }
}

3. 方法引用示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] names = {"Alice", "Bob", "Charlie", "Dave"};

        // 使用方法引用排序数组
        Arrays.sort(names, String::compareToIgnoreCase);

        // 输出结果
        Arrays.stream(names).forEach(System.out::println);
    }
}

4. 流式编程示例:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList(
                "apple", "banana", "cherry", "date", "elderberry", "fig");

        // 使用流式编程筛选并打印结果
        fruits.stream()
                .filter(s -> s.startsWith("c"))
                .map(String::toUpperCase)
                .sorted()
                .forEach(System.out::println);
    }
}

这些示例代码展示了Java函数式编程的常用概念和实现方式。通过Lambda表达式、函数式接口、方法引用和流式编程,Java函数式编程可以实现代码简化、可读性提升、并行处理等优点。