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);
}

 

posted on 2016-05-25 15:38  wzyy  阅读(465)  评论(0编辑  收藏  举报