zoukankan      html  css  js  c++  java
  • java8中使用函数式接口

    使用函数式接口

    Predicate

    @FunctionalInterface
    interface Predicate<T>{
        boolean test(T t);
    }
    
    public static <T> List<T> filter(List<T> list,Predicate<T> p){
            List<T> ts = new ArrayList<>();
            for (T t : list) {
                if (p.test(t)) {
                    ts.add(t);
                }
            }
            return ts;
    }
    

    Consumer

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

    Function

    @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 t : list) {
        result.add(f.apply(t));
      }
      return result;
    }
    
    public static void main(String[] args) {
      List<Integer> map = map(Arrays.asList("lambdas", "in", "action"), s -> s.length());
      System.out.println(map);
    }
    

    Lambdas及函数式接口的例子

    例子        															 对应接口
    布尔表达式: (List<String> list) -> list.isEmpty()      				Predicate<List<String>>
    创建对象:	() -> new Apple(10)										Supplier<Apple>
    消费一个对象:(Apple a) ->
       System.out.println(a.getWeight());							    Consumer<Apple>
    从一个对象中选择/提取:(String s )->s.length()							Function<String,Integer>或
      																	ToIntFunction<String>
    合并两个值:(int a, int b)->a*b										IntBinaryOperator
    比较两个对象:(Apple a1,Apple a2)->						BiFunction<Apple,Apple,Integeer>
      a1.getWeight().compareTo(a2.getWeight())						或ToIntBiFunction<Apple,Apple>
    
  • 相关阅读:
    JSONRPC(jsonrpc4j)使用demo
    Java游戏服务器成长之路——感悟篇
    使用Echarts进行可视化的数据线呈现
    vb 获取本机MAC地址
    mysql的索引使用不当速度比没加索引还慢
    创业名言
    网络公司的转变
    用php来读取团购网站的api
    php中全局变量global的使用
    MongoDB被全球最大的分类信息网站Craigslist使用
  • 原文地址:https://www.cnblogs.com/luozhiyun/p/7932013.html
Copyright © 2011-2022 走看看