zoukankan      html  css  js  c++  java
  • Lambda表达式和函数式接口

    Lambda表达式定义

    Lambda 表达式是 JDK 1.8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。

    函数式接口定义

    面向对象的思想:
    做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。
    函数式编程思想:
    只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程。
    有且仅有一个抽象方法的接口就是函数式接口,Java中的函数式编程体现就是Lambda,Lambda表达式也必须依靠函数式接口。

    JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。

    函数式接口的使用

    public interface FunctionInterfaceDemo {
        
        public abstract void print(String message);
    
    }
    

    Lambda表达式的使用

        public static void realizeFunction(String message,FunctionInterfaceDemo demo){
            demo.print(message);
        }
    
        public static void main(String[] args) {
            realizeFunction("Hello",(message)->{
                System.out.println(message);
            });
        }
    

    常用函数式接口

    主要位于java.util.function

    1.1 Supplier接口(生产接口)

    方法: T get();

    对外提供一个符合泛型类型的对象数据。

    1.2 Consumer接口(消费接口)

    方法(1):void accept(T t);

    消费传入的数据,即对数据进行一次自定义处理。

    方法(2):default Consumer andThen(Consumer<? super T> after)

    消费传入的数据,对数据进行两次自定义处理。

    1.3 Predicate接口(断言接口)

    方法(1):boolean test(T t);

    对传入的数据,进行判断,返回判断的结果。

    方法(2):default Predicate and(Predicate<? super T> other)

    将两个Predicate条件使用“与”逻辑连接起来实现“并且”的效果。

    方法(3):default Predicate or(Predicate<? super T> other)

    将两个Predicate条件使用“或”逻辑连接起来实现“或”的效果。

    方法(4):default Predicate negate()

    取反,对test(T t)判断后的结果进行取反。

    1.4 Function接口(转换接口)

    方法(1):R apply(T t);

    对传入的数据类型T,进行处理为R类型数据,并返回。

    方法(2):default Function<T, V> andThen(Function<? super R, ? extends V> after)

    对传入的数据类型进行两次处理后,返回我们需要的数据类型。

    XFS
  • 相关阅读:
    [ZJOI2010] 数字计数
    [USACO] 2004 Open MooFest 奶牛集会
    数星星
    [SCOI2011] 糖果
    西瓜种植
    [NOI2018] 归程
    [APIO2012] 派遣
    小K的农场
    妮可妮可妮 [Hash]
    [ZJOI2012] 灾难
  • 原文地址:https://www.cnblogs.com/xiaofengshan/p/14655088.html
Copyright © 2011-2022 走看看