美文网首页Google Guava学习笔记
Guava函数式编程(3)

Guava函数式编程(3)

作者: Viking_Den | 来源:发表于2016-09-16 12:27 被阅读230次

使用Supplier接口

Supplier接口只要一个方法:

public interface Supplier<T> {
   T get();
}

非常简单的一个定义,简而言之,得到一个对象。但它有什么用呢?我们可以把耗资源运算放到get方法里,在程序里,我们传递的是Supplier对象,直到调用get方法时,运算才会执行。
实现Supplier的示例:

public class ComposedPredicateSupplier implements Supplier<Predicate<String>> {
     @Override
     public Predicate<String> get() {
           City city = new City("Austin,TX","12345",250000, Climate.SUB_TROPICAL,45.3);
           State state = new State("Texas","TX", Sets.newHashSet(city), Region.SOUTHWEST);
           City city1 = new City("New York,NY","12345",2000000,Climate.TEMPERATE,48.7);
           State state1 = new State("New York","NY",Sets.newHashSet(city1),Region.NORTHEAST);
           Map<String,State> stateMap = Maps.newHashMap();
           stateMap.put(state.getCode(),state);
           stateMap.put(state1.getCode(),state1);
           Function<String,State> mf = Functions.forMap(stateMap);
           return Predicates.compose(new RegionPredicate(), mf);
     }
}
  • 使用Suppliers.memoize
    memoize() 函数第一次 get() 的时候,它会调用真正Supplier,得到结果并保存下来,下次再访问就返回这个保存下来的值。
Supplier<Predicate<String>> wrapped = Suppliers.memoize(composedPredicateSupplier);
  • 使用Suppliers.memoizeWithExpiration
    有时候,这个值只在一段时间内是有效的,让我们可以设定过期时间:
Supplier<Predicate<String>> wrapped = Suppliers.memoize(composedPredicateSupplier,10L,TimeUnit.MINUTES);

PS:函数式编程里的惰性求值

相关文章

  • Guava函数式编程(3)

    使用Supplier接口 Supplier接口只要一个方法: 非常简单的一个定义,简而言之,得到一个对象。但它有什...

  • Guava函数式编程

    函数式编程 截至JDK7,Java中也只能通过笨拙冗长的匿名类来达到近似函数式编程的效果。预计JDK8中会有所改变...

  • Guava函数式编程(1)

    本章节主要介绍以下几个接口和类: Function和Functions Predicate和Predicates ...

  • Guava函数式编程(2)

    使用Predicate接口 可以说Predicate接口和Function接口是具有相似的功能,Predicate...

  • FY-7216 5-前端工程化

    前端工程话&函数式编程 函数式编程 特点: vue3 react16.8 全面化函数式的推动 函数式编程可以使得代...

  • 函数式编程

    为什么学习函数式编程 函数式编程随着react的流行受到越来越多的关注 vue3也开始拥抱函数式编程 函数式编程可...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • Scala 入门

    1 函数式编程思想 1.1 介绍 1.2 scala函数式编程思想 2 环境搭建 3 实战 4 变量 函数 函数定...

  • 函数式编程理解入门

    函数式编程随着 react 的流行收到越来越多的关注 VUE3 也开始拥抱函数式编程 函数式编程可以抛弃 this...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

网友评论

    本文标题:Guava函数式编程(3)

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