chengaofeng
发布于 2024-09-05 / 5 阅读
0
0

Java函数式编程知识点枚举

  1. Lambda表达式

  2. 函数式接口

  3. 方法引用

  4. 构造器引用

  5. Stream API

  6. Optional类

  7. 默认方法

  8. 静态方法

  9. 高阶函数

  10. 闭包

  11. 惰性求值

  12. 并行流

  13. Collectors类

  14. Predicate接口

  15. Function接口

  16. Consumer接口

  17. Supplier接口

  18. BiFunction接口

  19. UnaryOperator接口

  20. BinaryOperator接口

解释

  • Lambda表达式

    • 用法:用于简化匿名内部类的写法,提供简洁的语法来定义单方法接口的实现。

    • 示例

      (parameters) -> expression
      
      (parameters) -> { statements; }
  • 函数式接口

    • 用法:接口中只有一个抽象方法,可以使用Lambda表达式或方法引用来实现。

    • 示例

      @FunctionalInterface
      
      public interface MyFunctionalInterface {
      
          void execute();
      
      }
  • 方法引用

    • 用法:使用现有的方法来实现函数式接口的抽象方法。

    • 示例

      ClassName::methodName
      
      instance::methodName
  • 构造器引用

    • 用法:使用构造器来实现函数式接口的抽象方法。

    • 示例

      ClassName::new
  • Stream API

    • 用法:用于处理集合数据的序列化操作,支持链式调用和并行处理。

    • 示例

      List<String> list = Arrays.asList("a", "b", "c");
      
      list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
  • Optional类

    • 用法:用于避免null值,提供了一种优雅的方式来处理可能为空的值。

    • 示例

      Optional<String> optional = Optional.of("value");
      
      optional.ifPresent(System.out::println);
  • 默认方法

    • 用法:接口中可以包含带有实现的方法,允许接口在不破坏现有实现的情况下扩展。

    • 示例

      public interface MyInterface {
      
          default void defaultMethod() {
      
              System.out.println("Default method");
      
          }
      
      }
  • 静态方法

    • 用法:接口中可以包含静态方法,提供与接口相关的工具方法。

    • 示例

      public interface MyInterface {
      
          static void staticMethod() {
      
              System.out.println("Static method");
      
          }
      
      }
  • 高阶函数

    • 用法:可以接收其他函数作为参数或返回值的函数。

    • 示例

      public static void highOrderFunction(Consumer<String> consumer) {
      
          consumer.accept("Hello");
      
      }
  • 闭包

    • 用法:Lambda表达式或匿名类可以捕获并使用其外部作用域中的变量。

    • 示例

      String message = "Hello";
      
      Runnable r = () -> System.out.println(message);
  • 惰性求值

    • 用法:Stream操作是惰性求值的,只有在终端操作时才会执行。

    • 示例

      Stream<String> stream = list.stream().filter(s -> s.startsWith("a"));
  • 并行流

    • 用法:通过并行处理提高Stream操作的性能。

    • 示例

      list.parallelStream().forEach(System.out::println);
  • Collectors类

    • 用法:提供了各种预定义的收集器实现,用于将Stream的结果收集到不同类型的集合中。

    • 示例

      List<String> result = stream.collect(Collectors.toList());
  • Predicate接口

    • 用法:用于定义一个接受一个参数并返回布尔值的函数。

    • 示例

      Predicate<String> predicate = s -> s.isEmpty();
  • Function接口

    • 用法:用于定义一个接受一个参数并返回一个结果的函数。

    • 示例

      Function<String, Integer> function = s -> s.length();
  • Consumer接口

    • 用法:用于定义一个接受一个参数并执行某些操作的函数。

    • 示例

      Consumer<String> consumer = s -> System.out.println(s);
  • Supplier接口

    • 用法:用于定义一个不接受参数但返回一个结果的函数。

    • 示例

      Supplier<String> supplier = () -> "Hello";
  • BiFunction接口

    • 用法:用于定义一个接受两个参数并返回一个结果的函数。

    • 示例

      BiFunction<String, String, Integer> biFunction = (s1, s2) -> s1.length() + s2.length();
  • UnaryOperator接口

    • 用法:用于定义一个接受一个参数并返回同类型结果的函数。

    • 示例

      UnaryOperator<String> unaryOperator = s -> s.toUpperCase();
  • BinaryOperator接口

    • 用法:用于定义一个接受两个参数并返回同类型结果的函数。

    • 示例

      BinaryOperator<Integer> binaryOperator = (a, b) -> a + b;


评论