jdk 8 内置 函数式接口使用
Pridicate 实例 -》 条件判断函数接口
package com.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class MyPredicateDemo {
public static List<Student> filter(List<Student> studentList, Predicate<Student> predicate){
List<Student> list = new ArrayList<Student>();
studentList.forEach(s->{
if (predicate.test(s) ){
list.add(s);
}
});
return list;
}
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student(1, "aE", "M"));
list.add(new Student(2, "bE", "W"));
list.add(new Student(3, "aF", "M"));
//定义当前类中filter 中函数test 方法体
List<Student> filter = filter(list, s -> s.getSex().equals("W"));
System.out.println(filter.toString());
}
}
Consumer 实例 -》数据获取函数接口
package com.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class MyConsumerDemo {
public static void foreach(List<String> list, Consumer<String> consumer){
list.forEach(v->consumer.accept(v));
}
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("php");
list.add("java");
list.add("go");
list.add("ruby");
foreach(list, s -> System.out.println(s));
}
}
Function 数据转换同时后续操作函数接口
package com.demo;
import java.util.function.Function;
public class MyFunctionDemo {
//function 数据转换
public static Integer convert(String value, Function<String, Integer> function){
return function.apply(value);
}
public static void main(String[] args) {
String value = "888";
//将所有转换之后的值做变更
Integer convert = convert(value, s -> Integer.parseInt(value) + 111);
System.out.println(convert);
}
}
Supplier 也是数据获取,类似 Consumer 但是这个没有参数且是有返回值的
package com.demo;
import java.util.function.Supplier;
public class MySupplierDemo {
public static Integer getMin(Supplier<Integer> supplier){
return supplier.get();
}
public static void main(String[] args) {
int[] arr = {111,222,444,1111,-98, 999};
Integer res = getMin(() -> {
int min = arr[0];
for (int i : arr) {
if(i < min){
min = i;
}
}
return min;
});
System.out.println(res);
}
}