• Functionjdk8用法


    Lambda表达式。首先是参数部分,接着是->,可以视为产出,->之后的内容都是方法体。

    • 当只有一个参数时,可以不需要括号();
    • 正常情况使用()包裹参数,为了保持一致性,也可以使用括号()包裹单个参数;
    • 如果没有参数,则需要使用()表示空参数列表;
    • 对于多个参数,将参数列表放在()内;
    • 如果Lambda表达式中需要多行,那就需要将这些行放在花括号中,并且需要使用return返回产出。
    示例
    () → System.out.println("Zero parameter"); 
    (p) → System.out.println("One parameter p="+ p); 
    (a b c) → System.out.println("Multiple parameter a="+ a+" b="+b+" c="+c); 
    
    (a b) -> { 
      int sum=a+b; 
      return sum; 
    }
    public static void main(String[] args) {
            /**
             * Function<T, R>: 接收1个输入参数,返回1个结果
             */
            Function<Integer, Integer> func1 = i -> {return i+5;};
            System.out.println(calculate(6, func1));
    
    
            /**
             * BiFunction<T, U, R> 接受1个入参T和U,并返回结果R。
             */
            BiFunction<String, Integer, String> biFunction = (key, value) -> {return (key + ":" + String.valueOf(value));};
            String key = "age";
            Integer value = 18;
            System.out.println(biFunction.apply(key, value));
    
    
            /**
             * Supplier 生产功能函数,无入参,返回1个结果。
             */
            Supplier<String> supplier = () -> {return "Supplier: 商品";};
            System.out.println(supplier.get());
    
    
            /**
             * Consumer 消费函数,接收1个输入参数并且无返回的操作
             */
            Consumer<String> consumer1 = s -> System.out.println(s + ",我是消费者1");
            consumer1.accept("铁甲小宝");
    
    
            /**
             * BiConsumer<T, U>  消费函数,接受2个输入参数的操作,并且不返回任何结果。
             */
            BiConsumer<String, Integer> biConsumer1 = (s, i) -> {
                System.out.println("我是消费逻辑1" + "," + s + "," + (i + 4));
            };
            biConsumer1.accept("铁甲小宝", 6);
    
    
            /**
             * Predicate 断言函数,接受1个输入参数,返回1个布尔值结果。
             */
            // 断言输入值是否大于10
            Predicate<Integer> isSuperTen = i -> {return i>10;};
            System.out.println("P:"+ isSuperTen.test(11));
            System.out.println("P:"+ isSuperTen.test(6));
    
    
            /**
             * BiPredicate<T, U> 对2个输入参数T和U进行断言,返回1个布尔值输出。
             */
            // 判断输入1是否大于10,且输入2小于20
            BiPredicate<String, Integer> biPredicate = (s, i) -> {
                return Integer.parseInt(s) > 10 && i < 20;
            };
            System.out.println("B:"+biPredicate.test("15", 16));
            System.out.println("B:"+ biPredicate.test("15", 21));
    
        }
    
        public static Integer calculate(Integer i, Function<Integer, Integer> function){
            return function.apply(i);
        }
  • 相关阅读:
    转载:支持向量机SVM原理
    python爬虫:BeautifulSoup的使用
    python爬虫:使用urllib库获取数据
    python爬虫:urllib库的简单使用
    C++实现logistic模型
    C++实现感知机模型
    希尔伯特矩阵(Hilbert matrix)
    2/2 从一个简单例子来看 Vue.js 中 v-for 中 key 值的重要性
    1.31 Vue.js 学习总结 ( 一 )
    1/30 Vue.js中的数据响应
  • 原文地址:https://www.cnblogs.com/lgg20/p/16400319.html
Copyright © 2020-2023  润新知