package org.javacore.colgoogle; import com.google.common.base.Function; import com.google.common.collect.MapMaker; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; /** * Created by 子木 on 2016/2/20. */ public class MapMakerT { // 使用案例:存储验证码 // <String, String> == <用户唯一,验证码> // expiration(15, TimeUnit.MINUTES) 有效期15分钟 ConcurrentMap<String,String> capthcaMap = new MapMaker().expiration(15, TimeUnit.MINUTES).makeMap(); // 设置ConcurrentMap的concurrencyLevel参数 ,例如ConcurrentHashMap是用来控制其Segment数组的大小 ConcurrentMap<String,Object> map1 = new MapMaker().concurrencyLevel(8).makeMap(); // 构造各种不同reference作为key和value的map ConcurrentMap<String,Object> map2 = new MapMaker().softKeys().weakValues().makeMap(); // 提供当Map里面不包含所get的项,可以自动加入到Map的功能 ConcurrentMap<String,Integer> map3 = new MapMaker() .makeComputingMap( new Function<String, Integer>() { public Integer apply(String key) { return 1; } } ); }