一,函数式编程:
- 函数式编程是基于函数式接口并使用lambda表达的编程方式
- 函数式编程理念是将代码作为可重用数据代入到程序运行中(以前传统面向对象开发时都是一些比如人名,编号之类的一些具体信息。函数式编程的核心是将已经准备好的代码作为可重用资源参与程序运行过程中,通过传入不同代码块展现出不同的行为)
- 函数式编程强调“你想做什么”,而不是“你想怎么做”
二,函数式接口:
- 函数式接口:接口中有且只有一个抽象方法的接口
- java中拥有大量函数式接口,比如java.lang.Runnable
- jdk8后提供了一系列新的函数式接口,位于java.util.function
三,函数式接口Predicate
- predicate是新增的函数式接口,位于java.util.function
- predicate用于测试传入的数据是否满足判断要求,类似于if,满足条件返回true,反之返回false
- predicate接口需要实现test()方法进行逻辑判断
public static void main(String[] args) {
// 求小于4的数
Predicate<Integer> predicate = n -> n < 4;
System.out.println(predicate.test(12));
}
public class PredicateSample {
public static void filter(List<Integer> list, Predicate<Integer> predicate) {
for (Integer i : list) {
if (predicate.test(i)) {
System.out.print(i + " ");
}
}
System.out.println();
}
public static void main(String[] args) {
// 求奇数
List<Integer> lists = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
filter(lists, n -> n % 2 == 1);
// 求大于4的偶数
filter(lists, n -> n % 2 == 0 && n > 4);
}
}