• lambda的函数式接口


      函数式接口就是只包含一个抽象方法的接口A(不包括默认抽象方法,但包括继承来的方法);这个接口用来作为一个可变作用的方法B的参数。函数式接口的抽象方法的参数类型和返回值就是一套签名,这个签名叫做函数描述符,可以描述lambda的类型。@FunctionalInterface

       1.8给了几个用来描述常见函数描述符的函数式接口:Predicate、Consumer、Function

       1、Predicate

        Predicate接口定义了一个名为test的抽象方法,它接受泛型T的对象,返回一个boolean。就是传进来任意对象在方法中用来判断是否(断言)。

    @FunctionalInterface
        public interface Predicate<T>{
            boolean test(T t);
        }
    
        public static<T> List<T> filter(List<T> list,Predicate<T> p){
            List<T> results= new ArrayList<>();
            for(T s:list){
                if(p.test(s)){
                    results.add(s);
                }
            }
        return results;
        }   
    
    Predicate<String> nonEmptyStringPredicate=(String s)->!s.isEmpty();
    List<String> nonEmpty=filter(listOfStrings,nonEmptyPredicate);

         2、Consumer

        Consumer接口定义了一个accept()的方法,参数为一个泛型T,返回值为空;就是消费的意思,方法将传入的泛型对象进行某些操作处理就消费空了。

    @FunctionalInterface
    public interface Consumer<T>{
        void accept(T t);
    }
       
    public static <T> void forEach(List <T> list,Consumer<T> c){
        for(T i:list){
            c.accept(i);
        }
    }
    
    forEach(Arrays.asList(1,2,3,4,5),(Integer i)->System.out.println(i));

      

        3、function

        function接口定义了一个apply()的方法,它接受一个泛型T的对象,并返回一个泛型R的对象。通过该接口的抽象方法就可以将一种泛型经过一系列操作变为另一种泛型。

    @FunctionalInterface
    public interface Function<T,R>{
        R apply(T t);
    }
    
    public static<T,R> List<R> map(List<T> list,Function<T,R>  f){
        List<R> result = new ArrayList<>();
        for(T s:list){
            result.add(f.apply(s));
        }
        return result;
    }
    
    List<Integer> l=map(Arrays.aslist("lambdas","in","action"),(String s)->s.length());
  • 相关阅读:
    不同权限访问详细细节
    文件搜索器
    java中依赖、关联、聚合
    子类重写父类成员方法
    java中子类对父类中的私有变量和私有方法有拥有权无使用权
    shell脚本在CentOS7自动更包
    LR虚拟用户已设置集合点,但controller无法设置集合点策略的解决方案
    LR工具使用之场景设置
    LR集合点策略
    LR录制附件上传后,回放报错
  • 原文地址:https://www.cnblogs.com/television/p/9274163.html
Copyright © 2020-2023  润新知