Java的lambda表达式以及函数式编程简介

lambda表达式

  1. 用来支持函数式编程,利用函数式编程可以避免掉一些繁琐的处理问题,简化代码。
  2. lambda使用要求:SAM,接口只有一个抽象方法,这样的接口被称为函数式接口,函数式接口才能被lambda表达式所使用。 例子: // Messageable.java @FunctionalInterface public interface Messageable { void send(String inStr); } // Main.java public class Main { public static void main(String[] args){ Messageable aMessage = (str) -> { System.out.println(str); }; aMessage.send("Hello"); } } // 结果:Hello
  3. lambda有好几种形式 方法没有参数:() -> {} 方法有参数: (参数, 参数) -> {} 有返回语句: (参数, 参数) -> {语句}

方法引用

  1. 尽量不用

内建式函数接口

  1. 使用java.util.function开发包,里面可以直接使用函数式接口。主要函数接口如下 功能性函数式接口 String内有charAt()方法 public char charAt(int index) { // ...省略 } 测试功能性函数式接口 String aString = "abcde"; Function<Integer, Character> getChar = aString :: charAt; System.out.println(getChar.apply(0)); // a 消费型函数式接口:只能怪进行数据的处理操作,无任何返回值。 System.out.println属于此类型的函数 Consumer<String> consumer = System.out :: println; consumer.accept("Hello World"); // Hello World 供给性函数式接口:无接收参数,有返回值。 String的isEmpty()无接收参数,返回是否为空的布尔值。 Supplier<Boolean> supplier = aString :: isEmpty; System.out.println(supplier.get()); // false 断言型函数式接口,进行判断处理:接收参数,布尔返回值。 Predicate<CharSequence> predicate = aString :: contains; System.out.println(predicate.test("a")); // true
文中涉及图片来自魔乐科技
经验分享 程序员 微信小程序 职场和发展