1 52 53 package com.go.trove.util; 54 55 import java.util.*; 56 57 67 public class WrappedCache extends AbstractMap implements Map { 68 private final Map mCacheMap; 69 private final Map mBackingMap; 70 71 77 public WrappedCache(Map cacheMap, Map backingMap) { 78 mCacheMap = cacheMap; 79 mBackingMap = backingMap; 80 } 81 82 85 public int size() { 86 return mBackingMap.size(); 87 } 88 89 92 public boolean isEmpty() { 93 return mBackingMap.isEmpty(); 94 } 95 96 100 public boolean containsKey(Object key) { 101 return mCacheMap.containsKey(key) || mBackingMap.containsKey(key); 102 } 103 104 108 public boolean containsValue(Object value) { 109 return mCacheMap.containsValue(value) || 110 mBackingMap.containsValue(value); 111 } 112 113 118 public Object get(Object key) { 119 Object value = mCacheMap.get(key); 120 if (value != null || mCacheMap.containsKey(key)) { 121 return value; 122 } 123 value = mBackingMap.get(key); 124 if (value != null || mBackingMap.containsKey(key)) { 125 mCacheMap.put(key, value); 126 } 127 return value; 128 } 129 130 134 public Object put(Object key, Object value) { 135 mCacheMap.put(key, value); 136 return mBackingMap.put(key, value); 137 } 138 139 143 public Object remove(Object key) { 144 mCacheMap.remove(key); 145 return mBackingMap.remove(key); 146 } 147 148 151 public void clear() { 152 mCacheMap.clear(); 153 mBackingMap.clear(); 154 } 155 156 159 public Set keySet() { 160 return mBackingMap.keySet(); 161 } 162 163 166 public Collection values() { 167 return mBackingMap.values(); 168 } 169 170 173 public Set entrySet() { 174 return mBackingMap.entrySet(); 175 } 176 } 177 | Popular Tags |