我有兴趣知道google guava 11.0库中引入的loadAll方法实现的有效方法是什么.
下面的代码描述
了根据CachesExplained中的示例加载所有扩展的方法实现
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder().maximumSize(1000)
.refreshAfterWrite(1, TimeUnit.MINUTES)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) { // no checked exception
return getGraphFromDatabase(key);
}
public Map<Key, Graph> loadAll(Iterable<? extends K> keys) {
return getAllGraphsFromDatabase(keys);
}
}
);
private Map<Key, Graph> getAllGraphsFromDatabase(Iterable<? extends key> keys)
{
lListOfGraph = //resultset got from DB Call
for (lCount = 0; lCount < lListOfGraph.size(); lCount++)
{
lGraph = (Graph)lListOfGraph.get(lCount).get(0);
graphs.asMap().put((key , lGraph);
}
return (Map<key, Graph>) graphs;
}
Run Code Online (Sandbox Code Playgroud)
这里返回的类型是Map throws …
当前我正在使用以下代码片段来创建过滤器,在地图中匹配并提供结果集的过滤列表.
final Map filteredMap = Maps.filterKeys(mymap, Predicates.containsPattern("^Xyz"));
Run Code Online (Sandbox Code Playgroud)
但是,Guava Predicates.containsPattern会进行区分大小写的匹配.
我应该如何使用containsPattern来做case-Insensitive匹配.