• 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);
        }
  • 相关阅读:
    HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)
    Linux虚拟机添加新硬盘的全程图解
    Servlet 单例多线程
    MapReduce类型与格式(输入与输出)
    hbase集群的启动,注意几个问题
    spring 的IoC的个人理解
    深入Java核心 Java中多态的实现机制(1)
    spring mvc 请求转发和重定向(转)
    XML中<beans>中属性概述
    hadoop+javaWeb的开发中遇到包冲突问题(java.lang.VerifyError)
  • 原文地址:https://www.cnblogs.com/lgg20/p/16400319.html
Copyright © 2020-2023  润新知