- Consumer: 消费型接口
void accept(T t);
Supplier: 供给型接口
T get();
Function<T,R> : 函数型接口
R apply(T t);
Predicate: 断言型接口
boolean test(T t); - eg:消费型接口
public class LambdaTest {
public static void main(String[] args) {
//1. 消费型接口
consumer(111.33,(x)-> {
System.out.println("共消费了: " + x +" 元");
});
}
public static void consumer(double money, Consumer<Double> con){
con.accept(money);
}
}
供给型接口:
public class LambdaTest {
public static void main(String[] args) {
//1. 供给型接口
List<Integer> nums = getNums(10, () -> (int) (Math.random() * 100));
System.out.println(nums);
}
public static List<Integer> getNums(int num,Supplier<Integer> supplier){
List<Integer> list = new ArrayList<>();
for (int i = 0; i < num; i++) {
Integer n = supplier.get();
list.add(n);
}
return list;
}
}
函数型接口:
public class LambdaTest {
public static void main(String[] args) {
//1. 函数型接口
String result = getStr("aa",(x) -> {
String s = "";
if(x != null){
s = x.trim().toUpperCase();
}
return s;
});
System.out.println("result: " + result);
}
public static String getStr(String str, Function<String,String> funStr){
return funStr.apply(str);
}
}
断言型接口:
public class LambdaTest {
public static void main(String[] args) {
//1. 断言型接口
List<String> list = Arrays.asList("hello","ss","lambda","ok","mca");
List<String> filterStr = filterStr(list, (s) -> s.length() > 2);
System.out.println(filterStr);
}
public static List<String> filterStr(List<String> list, Predicate<String> pre){
List<String> strList = new ArrayList<>();
for (String s : list){
if(pre.test(s)){
strList.add(s);
}
}
return strList;
}
}