你可能想看看
Google Collections
有一些东西可以满足你的需要,这样你就不必支持你自己的地图了。例如,请参见,
MapMaker
private Map<Key, Graph> createMap() {
ConcurrentMap<Key, Graph> graphs = new MapMaker()
.concurrencyLevel(32)
.softKeys()
.weakValues()
.expiration(30, TimeUnit.MINUTES)
.makeComputingMap(
new Function<Key, Graph>() {
public Graph apply(Key key) {
return createExpensiveGraph(key);
}
});
return Collections.unmodifiableMap(graphs);
}
请注意,在构造之后,映射不会完全不可变,因为执行
map.get(key)
使用以前看不见的键将更改所看到的内容
Map.entrySet()
如果你需要编写一个自定义的地图实现,并且想从一个好的地方开始你的测试,那么亚当建议你使用谷歌收藏的
MapInterfaceTest
是一个好的。