/**
* @description:
* @author: yrm
* @create: 2020-08-16 21:44
* 演示函数式接口的使用
**/
public class Demo1 {
public static void main(String[] args) {
//消费型调用
happy(aDouble -> System.out.println("今天消费了:"+aDouble),1000);
System.out.println("--------------");
//供给型调用
int[] nums = getNums(() -> new Random().nextInt(100), 6);
for (int num : nums) {
System.out.print(num+" ");
}
System.out.println();
System.out.println("--------------");
//函数型调用
handleInt(new Function<Integer, Integer>() {
@Override
public Integer apply(Integer integer) {
return ++integer;
}
},10);
System.out.println("--------------");
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张三");
arrayList.add("王三");
arrayList.add("张三丰");
arrayList.add("李三");
//判断型调用
ArrayList<String> filter = filter(new Predicate<String>() {
@Override
public boolean test(String s) {
if (s.startsWith("张")) {
return true;
}
return false;
}
}, arrayList);
for (String s : filter) {
System.out.print(s+" ");
}
}
//Consume消费型 有参无返回值
public static void happy(Consumer<Double> consumer,double money) {
consumer.accept(money);
}
//Supplier供给型 无参有返回值
public static int[] getNums(Supplier<Integer> supplier,int length) {
int[] arr = new int[length];
for (int i = 0; i < length; i++) {
arr[i] = supplier.get();
}
return arr;
}
//Function函数型 有参有返回值
public static void handleInt(Function<Integer,Integer> function,int num) {
System.out.println(function.apply(num));
}
//Predicate判断型 有参有返回值
public static ArrayList<String> filter(Predicate<String> predicate ,ArrayList<String> names) {
ArrayList<String> list = new ArrayList<>();
for (String name : names) {
if (predicate.test(name)) {
list.add(name);
}
}
return list;
}
}
运行结果