//常用函数式接口
final int num = ;
//num++;
//第一个为传入参数的类型;第二个为返回数据的类型
Function<int[],String> function = (from) -> {
String value=null;
if(from[]>num)
value="gt num";
else
value="lt num";
return value;
};
int[] arr= {,,,,};
System.out.println(function.apply(arr));//6 //谓词接口用来进行条件判断,它会传入一个参数,判断这个参数是否满足某个条件,并进行布尔返回。
Predicate<Integer> pre =(a) -> a==num;
System.out.println(pre.test()); //单元操作接口对传入的参数进行转化,并且会返回指定数据类型的结果。对于这里的“单元”指的是:操作参数只有一个。
IntUnaryOperator intUnaryOperator = (in) -> (in+)>? :;
System.out.println(intUnaryOperator.applyAsInt()); //二元操作和单元操作的区别是,二元操作可以接受2个参数。通常,它进行的是两个元素的运算。两个传入参数和返回值的数据类型,也都是相同的。
IntBinaryOperator intBinaryOperator = (left,right) -> left+right;
System.out.println(intBinaryOperator.applyAsInt(, )); //消费者接口和函数接口的不同之处在于,消费者是“无声的”,也就是他们会默默地把传入的数据“吃掉”,而不做任何返回。
Consumer<String> consumer = (t)-> {}; //与之相反的是工厂接口(或者可以翻译为供应商接口),它门只做产出而不进行任何消费,通常可以把他们当成一个工厂。
Supplier<String> supplier=()->{return "get..";};
supplier.get(); //使用自定义的函数式接口
MyInterface<Integer, Integer, String> my=(a,b)->{
String result=null;
if(a+b<) {
result = MyInterface.BUJIGE;
}
if(a+b>&&a+b<) {
result = MyInterface.JIGE;
}
return result;
};
System.out.println(my.test(,));
Arrays.stream(new Integer[] {1,2,3,4}).map((Integer x)-> x*2).filter((x)->x>3).forEach(System.out::print);
System.out.println("---");
Arrays.stream(new Integer[] {1,2,3,4}).filter((x)->x>2).peek((s)->System.out.println(s));
自定义接口
@FunctionalInterface
public interface MyInterface<A,B,C> {
final String JIGE="及格";
final String YOUXIU="优秀";
final String LIANGHAO="良好";
final String BUJIGE="不及格";
//A B为传入的数据类型,C为返回的数据类型
public C test(A a,B b);
}