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表达式,我们可以在运行时决定使用不同的过滤条件来过滤列表。