1

我正在开发的表单中有几个自动完成字段。我最大的包含近 2 万条记录,最小的包含大约 1k 条记录。到目前为止,我只是使用 TreeMap 来处理此任务,但是我发现它非常高效。我目前的结构看起来像这样。

private SortedMap<String, Set<String>> cache;

public AutocompleteCacheServiceImpl() {
    cache = Collections.synchronizedSortedMap(new TreeMap<String, Set<String>>());
}

在像这样居住的同时,

private void populateCache(String id, String name) {
    int len = name.length();

    for (int i = 1; i <= len; i++) {
        String key = name.substring(0, i).toLowerCase();
        if(this.cache.containsKey(key)) {
            Set<String> exist = cache.get(key);
            if(!exist.contains(id)) {                
                exist.add(id);
            }                
        } else {
            Set<String> _e = new HashSet<String>();
            _e.add(id);
            this.cache.put(key, _e);
        }

    }        
}

输出 1 h 1 ho 1 hou 1 hou 1 house

我希望用 Ehcache 之类的东西替换我的缓存实现,但是我对它不是很熟悉。我想知道是否有人对设置这样的东西有任何建议,这样击键的响应时间将保持在 500 毫秒或更短。

我看到了这个页面http://ehcache.org/documentation/get-started/getting-started

但也许我目前的填充方法导致我过度寻找更好的方法。

有人有什么想法吗?

4

1 回答 1

0

如果您希望优化性能,请查看patricia Trys,这里有一个实现SortedMap 的实现。

于 2012-06-06T15:39:41.197 回答