栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

寻找替代java.util.Map的替代品

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

寻找替代java.util.Map的替代品

更新(首次发布后约4年…):请注意,在较新版本的ehcache中,缓存项的持久性仅在付费产品中可用。感谢@boday指出这一点。

ehcache很棒。它将为您提供在内存,磁盘或具有溢出到磁盘的内存中实现映射所需的灵活性。如果为java.util.Map使用这个非常简单的包装器,那么使用它就非常简单:

import java.util.Collection;import java.util.List;import java.util.Map;import java.util.Set;import net.sf.ehcache.Cache;import net.sf.ehcache.Element;import org.apache.log4j.Logger;import com.google.common.collect.Sets;public class EhCacheMapAdapter<K,V> implements Map<K,V> {    @SuppressWarnings("unused")    private final static Logger logger = Logger .getLogger(EhCacheMapAdapter.class);    public Cache ehCache;    public EhCacheMapAdapter(Cache ehCache) {        super();        this.ehCache = ehCache;    } // end constructor    @Override    public void clear() {        ehCache.removeAll();    } // end method    @Override    public boolean containsKey(Object key) {        return ehCache.isKeyInCache(key);    } // end method    @Override    public boolean containsValue(Object value) {        return ehCache.isValueInCache(value);    } // end method    @Override    public Set<Entry<K, V>> entrySet() {        throw new UnsupportedOperationException();    } // end method    @SuppressWarnings("unchecked")    @Override    public V get(Object key) {        if( key == null ) return null;        Element element = ehCache.get(key);        if( element == null ) return null;        return (V)element.getObjectValue();    } // end method    @Override    public boolean isEmpty() {        return ehCache.getSize() == 0;    } // end method    @SuppressWarnings("unchecked")    @Override    public Set<K> keySet() {        List<K> l = ehCache.getKeys();        return Sets.newHashSet(l);    } // end method    @SuppressWarnings("unchecked")    @Override    public V put(K key, V value) {        Object o = this.get(key);        if( o != null ) return (V)o;        Element e = new Element(key,value);        ehCache.put(e);        return null;    } // end method    @Override    public V remove(Object key) {        V retObj = null;        if( this.containsKey(key) ) { retObj = this.get(key);        } // end if        ehCache.remove(key);        return retObj;    } // end method    @Override    public int size() {        return ehCache.getSize();    } // end method    @Override    public Collection<V> values() {        throw new UnsupportedOperationException();    } // end method    @Override    public void putAll(Map<? extends K, ? extends V> m) {        for( K key : m.keySet() ) { this.put(key, m.get(key));        } // end for    } // end method} // end class


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483836.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号