当前位置: 首页 > 图灵资讯 > 技术篇> 在 Java 中如何使用函数式编程:映射和过滤

在 Java 中如何使用函数式编程:映射和过滤

来源:图灵教育
时间:2024-08-18 22:58:17

在 java 在中间,映射函数应用于每个元素,创建新的列表;过滤函数选择合格元素,创建更小的列表。这些函数可以用来转换数据、提取子集和简化现实世界的问题,如处理客户数据。

在 Java 中如何使用函数式编程:映射和过滤

在 Java 函数编程:映射和过滤

函数编程是一个强调函数使用和避免状态变化的编程示例。映射和过滤是函数编程中常见的两种操作,有助于简化和优化代码。

映射

立即学习“Java免费学习笔记(深入);

映射操作将一个元素列表转换为另一个列表,每个新元素都是通过将给定函数应用于原始列表中的相应元素而创建的。它通常用于将数据从一个格式转换为另一个格式。

代码示例:

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

public class Mapping {

    public static void main(String[] args) {
        List<Integer> numbers = List.of(1, 2, 3, 4, 5);

        ///乘以每个数字 2
        List<Integer> doubledNumbers = numbers.stream()
                .map(number -> number * 2)
                .collect(Collectors.toList());

        System.out.println(doubledNumbers);
        // 输出:[2, 4, 6, 8, 10]
    }
}

过滤

过滤操作将一个元素列表缩小到另一个列表,包括满足给定条件的所有元素。它通常用于从数据集中提取特定元素的子集。

代码示例:

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

public class Filtering {

    public static void main(String[] args) {
        List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        ///过滤偶数
        List<Integer> evenNumbers = numbers.stream()
                .filter(number -> number % 2 == 0)
                .collect(Collectors.toList());

        System.out.println(evenNumbers);
        // 输出:[2, 4, 6, 8, 10]
    }
}

实战案例

函数编程也可以用来解决现实世界中的各种问题,如:

  • 处理大型数据集
  • 优化算法
  • 简化代码

例如,所有符合特定年龄范围的客户列表都可以使用映射和过滤来提取 VIP 客户。

代码示例:

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

public class RealWorldExample {

    public static void main(String[] args) {
        List<Customer> customers = getCustomers();

        //过滤出符合要求 VIP 标准的客户
        List<Customer> vipCustomers = customers.stream()
                .filter(customer -> customer.isVip())
                //提取客户年龄
                .map(customer -> customer.getAge())
                ///过滤年龄在 25 到 40 之间的 VIP 客户
                .filter(age -> age >= 25 && age <= 40)
                .collect(Collectors.toList());

        System.out.println(vipCustomers);
        // 输出:[Customer{id=123, name="John Doe", age=30, isVip=true}, Customer{id=456, name="Jane Smith", age=35, isVip=true}]
    }

    private static List<Customer> getCustomers() {
        // 模拟客户列表
        return List.of(
                new Customer(123, "John Doe", 30, true),
                new Customer(456, "Jane Smith", 35, true),
                new Customer(789, "Bob Smith", 25, false)
        );
    }

    private static class Customer {
        private int id;
        private String name;
        private int age;
        private boolean isVip;

        // 构造函数、getter 和 setter 方法省略
    }
}

以上就是在 Java 如何使用函数编程:映射和过滤的详细内容,请关注图灵教育的其他相关文章!