java怎么实现map 缓存技术

java怎么实现map 缓存技术,第1张

/**

 * 缓存

 * @author xiaoquan

 * @create 2015年3月13日 上午10:32:13

 * @see

 */

public class CachePool {

    private static CachePool instance//缓存池唯一实例

    private static Map<String,Object> cacheItems//缓存Map

     

    private CachePool(){

        cacheItems = new HashMap<String,Object>()

    }

    /**

     * 得到唯一实例

     * @return

     */

    public synchronized static CachePool getInstance(){

        if(instance == null){

            instance = new CachePool()

        }

        return instance

    }

    /**

     * 清除所有Item缓存

     */

    public synchronized void clearAllItems(){

        cacheItems.clear()

    }

    /**

     * 获取缓存实体

     * @param name

     * @return

     */

    public synchronized Object getCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return null

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name)

        if(cacheItem.isExpired()){

            return null

        }

        return cacheItem.getEntity()

    }

    /**

     * 存放缓存信息

     * @param name

     * @param obj

     * @param expires

     */

    public synchronized void putCacheItem(String name,Object obj,long expires){

        if(!cacheItems.containsKey(name)){

            cacheItems.put(name, new CacheItem(obj, expires))

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name)

        cacheItem.setCreateTime(new Date())

        cacheItem.setEntity(obj)

        cacheItem.setExpireTime(expires)

    }

    public synchronized void putCacheItem(String name,Object obj){

        putCacheItem(name,obj,-1)

    }

     

    /**

     * 移除缓存数据

     * @param name

     */

    public synchronized void removeCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return

        }

        cacheItems.remove(name)

    }

     

    /**

     * 获取缓存数据的数量

     * @return

     */

    public int getSize(){

        return cacheItems.size()

    }

}

public class CacheItem {

    private Date createTime = new Date()//创建缓存的时间

    private long expireTime = 1//缓存期满的时间

    private Object entity//缓存的实体

     

    public CacheItem(Object obj,long expires){

        this.entity = obj

        this.expireTime = expires

    }

     

    public boolean isExpired(){

        return (expireTime != -1 && new Date().getTime()-createTime.getTime() > expireTime)

    }

        /**

         * 省略getter、setter方法

         */

}

java中使用map存取数据的方法如下:

1、需要指定其中的K,V;k=keyv=value。

2、指定其中K、V的类型。

3、接下来往map中添加数据。

4、需要注意的是,如果map中已经存在的key,后面添加的会覆盖掉当前值。

接下来对map进行遍历输出。可以看到其中a的值已经被覆盖,此时就已经使用map存储好数据了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9650698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存