Guava Cache -- MapMaker.makeComputingMap测试
Posted chenjunjie12321
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Guava Cache -- MapMaker.makeComputingMap测试相关的知识,希望对你有一定的参考价值。
canal中很多处使用了MigrateMap.makeComputingMap(Function<? super K, ? extends V> computingFunction)方法,第一次接触这个方法,刚开始完全不知道在干啥,这个function中的参数的作用是啥,怎么使用,何时触发,之后简单的测试了一下,大致知道了其作用。
package com.company; import com.google.common.base.Function; import com.google.common.collect.MigrateMap; import java.util.concurrent.ConcurrentMap; /** * @author chenjunjie * @since 2018-9-26 */ public class GoogleColTestMain { /** * @param args */ public static void main(String[] args) { // makeComputingMap方法:根据this,创建一个NullComputingConcurrentMap或ComputingConcurrentMap。 ConcurrentMap<String, String> testMap = MigrateMap.makeComputingMap(new Function<String, String>() { /** * 这里就是绑定的根据key没找到value的时候触发的function, * 可以将这里的返回值放到对应的key的value中! * @param arg0 * @return */ public String apply(String arg0) { return "create:" + arg0; } }); testMap.put("a", "testa"); testMap.put("b", "testb"); System.out.println(testMap.get("a")); System.out.println(testMap.get("b")); System.out.println(testMap.get("c")); System.out.println(testMap.get("d")); /** * 总结: * 运行结果可以知道,当map再调用get的时候如果根据key值获取不到value时,会触发function,执行apply方法。 */ } }
测试结果:
"D:Program FilesJavajdk1.8.0_181injava.exe" ...
testa
testb
create:c
create:d
Process finished with exit code 0
从运行结果可以知道,当map再调用get的时候如果根据key值获取不到value时,会触发function,执行apply方法,并获取apply返回的值。
以上是关于Guava Cache -- MapMaker.makeComputingMap测试的主要内容,如果未能解决你的问题,请参考以下文章