java1.8常用的函数式接口
//常用函数式接口 final int num = 2; //num++; //第一个为传入参数的类型;第二个为返回数据的类型 Function<int[],String> function = (from) -> { String value=null; if(from[0]>num) value="gt num"; else value="lt num"; return value; }; int[] arr= {1,2,3,4,5}; System.out.println(function.apply(arr));//6 //谓词接口用来进行条件判断,它会传入一个参数,判断这个参数是否满足某个条件,并进行布尔返回。 Predicate<Integer> pre =(a) -> a==num; System.out.println(pre.test(12)); //单元操作接口对传入的参数进行转化,并且会返回指定数据类型的结果。对于这里的“单元”指的是:操作参数只有一个。 IntUnaryOperator intUnaryOperator = (in) -> (in+12)>0? 1:2; System.out.println(intUnaryOperator.applyAsInt(3)); //二元操作和单元操作的区别是,二元操作可以接受2个参数。通常,它进行的是两个元素的运算。两个传入参数和返回值的数据类型,也都是相同的。 IntBinaryOperator intBinaryOperator = (left,right) -> left+right; System.out.println(intBinaryOperator.applyAsInt(1, 2)); //消费者接口和函数接口的不同之处在于,消费者是“无声的”,也就是他们会默默地把传入的数据“吃掉”,而不做任何返回。 Consumer<String> consumer = (t)-> {}; //与之相反的是工厂接口(或者可以翻译为供应商接口),它门只做产出而不进行任何消费,通常可以把他们当成一个工厂。 Supplier<String> supplier=()->{return "get..";}; supplier.get(); //使用自定义的函数式接口 MyInterface<Integer, Integer, String> my=(a,b)->{ String result=null; if(a+b<60) { result = MyInterface.BUJIGE; } if(a+b>60&&a+b<80) { result = MyInterface.JIGE; } return result; }; System.out.println(my.test(10,60));
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); }
本文来自博客园,作者:wzyy,转载请注明原文链接:https://www.cnblogs.com/wwzyy/p/5527224.html