//消费型接口
//
import java.util.function.Consumer;
public class Demo01 {
public static void main(String[] args) {
test(2000, t -> System.out.println("做了个:" + t), "大宝剑");
}
public static void test(int money,Consumer<String> con,String str) {
System.out.println("花了"+money+"钱");
con.accept(str);
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.Supplier;
//供给型接口
//生成10个100以内的随机数存储到List集合中
public class Demo01 {
public static void main(String[] args) {
Random rd = new Random();
List<Integer> list = new ArrayList<Integer>();
list = getRandom(10, () -> rd.nextInt(100));
System.out.println(list);
}
//
public static List<Integer> getRandom(int n, Supplier<Integer> sup) {
List<Integer> list1 = new ArrayList<Integer>();
for (int i = 0; i < n; i++) {
list1.add(sup.get());
}
return list1;
}
}
import java.util.function.Function;
//函数式接口
public class Demo01 {
public static void main(String[] args) {
String str = conver(666, t -> String.valueOf(t));
System.out.println(str);
}
public static String conver(int num, Function<Integer, String> fun) {
return fun.apply(num);
}
}
import java.util.ArrayList;
import java.util.function.Predicate;
//函数式接口之断言型接口
public class Demo {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(66);
list.add(666);
list.add(35);
list.add(-20);
list.add(0);
list.add(33);
// 筛选出list集合中大于100的数字
ArrayList<Integer> result = filtneg(list, t -> t % 2 == 0);
System.out.println(result);
// 筛选出list集合中偶数且大于100的数字
}
//
public static ArrayList<Integer> filt(ArrayList<Integer> list, Predicate<Integer> pre, Predicate<Integer> pre2) {
ArrayList<Integer> result = new ArrayList<Integer>();
for (Integer i : list) {
if (pre.and(pre2).test(i)) {
result.add(i);
}
}
return result;
}
public static ArrayList<Integer> filtor(ArrayList<Integer> list, Predicate<Integer> pre, Predicate<Integer> pre2) {
ArrayList<Integer> result = new ArrayList<Integer>();
for (Integer i : list) {
if (pre.or(pre2).test(i)) {
result.add(i);
}
}
return result;
}
public static ArrayList<Integer> filtneg(ArrayList<Integer> list, Predicate<Integer> pre) {
ArrayList<Integer> result = new ArrayList<Integer>();
for (Integer i : list) {
if (pre.negate().test(i)) {
result.add(i);
}
}
return result;
}
}