码迷,mamicode.com
首页 > 系统相关 > 详细

Guava Cache -- MapMaker.makeComputingMap测试

时间:2018-09-26 13:01:17      阅读:1199      评论:0      收藏:0      [点我收藏+]

标签:sys   finish   怎么   string   绑定   ogr   总结   mon   就是   

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 Files\Java\jdk1.8.0_181\bin\java.exe" ...
testa
testb
create:c
create:d
 
Process finished with exit code 0
 
 
从运行结果可以知道,当map再调用get的时候如果根据key值获取不到value时,会触发function,执行apply方法,并获取apply返回的值。
 
 

Guava Cache -- MapMaker.makeComputingMap测试

标签:sys   finish   怎么   string   绑定   ogr   总结   mon   就是   

原文地址:https://www.cnblogs.com/chenjunjie12321/p/9706006.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!