函数式的优点

  • 精简代码
  • 提高代码效率
  • 减少bug

需求场景

  • 排序
  • map、forEach、filter

复杂逻辑用方法引用而不是lambada

  1. // lambada
  2. filter(users, User user -> { ... })
  3. // 方法引用,复杂逻辑写在User类的methodName静态方法中
  4. filter(users, User::methodName)

函数接口

1. 例子

  • java.util.function包下的函数接口
    • Predicate
    • Consumer
    • Function
    • Supplier

2. 任何只包含一个 抽象方法 的接口都可以被自动转换为函数接口

image.png

Comparator

  • comparing()
  • reverse()
  • thenComparing()