美文网首页
Lambda表达式

Lambda表达式

作者: 上海马超23 | 来源:发表于2017-07-16 10:45 被阅读0次

函数式接口

// 定义一个布尔表达式
@FunctionalInterface
public interface Predicate<T> {
  boolean test(T t)
}

// 接受两个对象,返回boolean
BiPredicate<L,R> {
  (L, R) -> boolean
}

// 访问T类型的对象,执行某些操作,但不返回。
@FunctionalInterface
public interface Consumer<T> {
  void accept(T t);
}

// 访问T类型对象和R类型对象
BiConsumer<T, U> {
  (T, U) -> void
}

// 接受输入T类型对象,映射输出R类型对象
@FunctionalInterface
public interface Function<T, R> {
  R apply(T t)
}

// T和U两个类型,映射成一个类型R

BiFunction<T, U, R> {
  (T, U) -> R
}

// 类似工厂方法,不接受外部参数,制造一个T对象
Supplier<T> {
  () -> T
}

// 一元操作符,进来T,出去也是T
UnaryOperator<T> {
  T -> T
}

// 二元操作符
BinaryOperator<T> {
  (T, T) -> T
}

复合Lambda表达式

比较器复合

inventory.sort(comparing(Apple::getWeight).reversed()
  .thenComparing(Apple::getCountry)) // 两个苹果一样重,按国家排序

谓词复合

Predicate<Apple> redAndHeavyAppleOrGreen = 
  redApple.and(a -> a.getWeight > 150)
    .or( a -> "green".equals(a.getColor()));

函数复合

Function<String, String> addHeader = Letter::addHeader;
Function<String, String> transformationPipeline = 
  addHeader.andThen(Letter::checkSpelling)
    .andThen(Letter::addFooter);

相关文章

网友评论

      本文标题:Lambda表达式

      本文链接:https://www.haomeiwen.com/subject/jzazhxtx.html