Java8四大内置核心函数式接口
- Consumer: 消费型接口 void accept(T t);
- Supplier: 供给型接口 T get();
- Function(T,R): 函数型接口 R apply(T t);
- Predicate: 断言型接口 boolean test(T t);
实例
import java.util.function.Consumer;
public class ConsumerTest {
public static void main(String[] args) {
ConsumerTest consumerTest = new ConsumerTest();
consumerTest.happy(10000,(m)->System.out.println("xxxxx"+m+"元"));
}
public void happy(double money, Consumer<Double>consumer){
consumer.accept(money);
}
}
public class SupplierDemo {
public static void main(String[] args) {
SupplierDemo supplierDemo = new SupplierDemo();
List<Integer> numList = supplierDemo.getNumList(10, () -> (int) (Math.random() * 100));
System.out.println("numList = " + numList);
}
public List<Integer> getNumList(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 FunDemo {
public static void main(String[] args) {
FunDemo funDemo = new FunDemo();
System.out.println(funDemo.strHandle("abcde", (str) -> str.toUpperCase()));
}
public String strHandle(String str, Function<String,String>function){
return function.apply(str);
}
}
public class PredictDemo {
public static void main(String[] args) {
PredictDemo predictDemo = new PredictDemo();
List<String>list = Arrays.asList("abc","hello","world","javaee");
List<String> list1 = predictDemo.stringList(list, (s) -> s.length() > 3);
System.out.println("list1 = " + list1);
}
public List<String> stringList(List<String>list, Predicate<String>predicate){
List<String>strlist = new ArrayList<>();
for (String s : list) {
if (s.length()>3){
strlist.add(s);
}
}
return strlist;
}
}