• 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>
    
  • 相关阅读:
    day06
    day05
    day04
    day03
    day02
    day01
    python-study-42
    OI 知识总览 算法篇 之 图论
    OI 知识总览 算法篇 之 基础算法
    [CSP2019-JX] 散步 解题报告
  • 原文地址:https://www.cnblogs.com/luozhiyun/p/7932013.html
Copyright © 2020-2023  润新知