Java Lambda中的行为参数化

Java Lambda中的行为参数化是指将行为作为方法的参数进行传递,以便根据不同的需求执行不同的行为。Lambda表达式是一种用于创建行为参数化代码的方式,它可以作为方法参数传递并在方法内部执行,从而使得方法的行为可以根据不同的Lambda表达式来变化。

行为参数化可以让代码更加灵活和可重用,例如在Java集合框架中,我们可以将不同的Lambda表达式传递给集合框架的方法,以便对集合进行不同的操作,例如过滤、映射和排序等。

以下是一个简单的例子,展示了如何使用Lambda表达式实现行为参数化:

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

public class BehaviorParametrizationDemo {
    public static void main(String[] args) {
        // 定义一个整数列表
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

        // 使用Lambda表达式和Predicate接口进行过滤操作,只保留偶数
        List<Integer> evenList = filterList(list, num -> num % 2 == 0);

        // 使用Lambda表达式和Predicate接口进行过滤操作,只保留大于3的数
        List<Integer> greaterThan3List = filterList(list, num -> num > 3);

        // 输出结果
        System.out.println("原始列表:" + list);
        System.out.println("过滤后的偶数列表:" + evenList);
        System.out.println("过滤后的大于3的数列表:" + greaterThan3List);
    }

    /**
     * 对列表进行过滤操作,只保留符合条件的元素
     *
     * @param list      待过滤的列表
     * @param predicate 过滤条件,使用Predicate接口表示
     * @return 过滤后的列表
     */
    public static <T> List<T> filterList(List<T> list, Predicate<T> predicate) {
        List<T> result = new ArrayList<>();
        for (T t : list) {
            if (predicate.test(t)) {
                result.add(t);
            }
        }
        return result;
    }
}

运行上述代码,将会输出如下结果:

原始列表:[1, 2, 3, 4, 5]
过滤后的偶数列表:[2, 4]
过滤后的大于3的数列表:[4, 5]

在上述代码中,我们使用Lambda表达式和Predicate接口来对整数列表进行了过滤操作,其中Predicate接口用于定义过滤条件。我们定义了一个通用的filterList()方法来对列表进行过滤操作,该方法接受一个列表和一个Predicate接口作为参数,用于表示过滤条件。通过传递不同的Lambda表达式,我们可以在运行时决定使用不同的过滤条件来过滤列表。