JAVA单例Map缓存

package com.xxx.util;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
/**
 * 该类用于缓存工作
 * 
 */
public  final class SimpleCache {
    private static final int MAX_CAPACITY = 1000;// 最大容量
    private static final Hashtable map = new Hashtable<>();

    private static SimpleCache cache = null;

    private SimpleCache(){};
    /**
     * 获取该类实例
     */
    public synchronized static SimpleCache getSimpleCache(){
        if(cache==null){
            cache = new SimpleCache();
        }
        return cache;
    }
    /**
     * 检查是否存在在key
     * @param key 键名称
     * @return  true 或 false
     */
    public boolean contains(String key) {

         return map.contains(key);
    }
    /**
     * 删除指定key
     * @param key 键名称
     */
    public void remove(String key) {

        map.remove(key);
    }
    /**
     * 清空缓存
     */
    public void rmoveAll (){
        map.clear();
    }
    /**
     * 根据指定的键值获取对应的val
     * @param key
     *      指定的键值
     * @return
     *      返回该key对应的Object值
     */
    public Object get (String key){
        return map.get(key);
    }
    /**
     * 获取所有缓存
     * @return Map集合
     */
    public Map getAll() {
        Map hashMap = new HashMap<>();
        Enumeration keys = map.keys();
        while(keys.hasMoreElements()) {
            String key = keys.nextElement();
            Object val = map.get(key);
            hashMap.put(key, val);
        }
        return hashMap;
    }
    /**
     * 将key映射到val加入缓存对象中
     * @param key
     *          名称
     * @param val
     *          该名称对应的Object数据
     */
    public void put (String key,Object val){
        if (val == null) {
            throw new NullPointerException();
        }
        if(map.size()>= MAX_CAPACITY){
            map.clear();
            map.put(key, val);
        }
        if(map.containsKey(key)){
            return ;
        }
        map.put(key, val);
    }
}

你可能感兴趣的:(Java)