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>
    
  • 相关阅读:
    用iptables封杀内网的bt软件
    FreeBSD 利用IPFW实现限制局域网使用QQ
    网络安全设备Bypass功能介绍及分析
    活用Windows Server 2008系统的几种安全功能
    恢复mysql管理员密码
    远程控制Windows2003下安装Pcanywhere导致Awgina.dll出错的解决办法
    Ubuntu 11.04 LAMP+JSP环境安装过程
    hbase首次导入大批次的数据成功!
    Chubby是什么?
    DP-Triangle
  • 原文地址:https://www.cnblogs.com/luozhiyun/p/7932013.html
Copyright © 2011-2022 走看看