OSDN Git Service

8a16c644e8f5b460ba27b22e68c71cac272fe59b
[android-x86/external-koush-Superuser.git] / Superuser / src / com / koushikdutta / superuser / util / SoftReferenceHashTable.java
1 package com.koushikdutta.superuser.util;
2
3 import java.lang.ref.SoftReference;
4 import java.util.Hashtable;
5
6 public class SoftReferenceHashTable<K,V> {
7     Hashtable<K, SoftReference<V>> mTable = new Hashtable<K, SoftReference<V>>();
8     
9     public V put(K key, V value) {
10         SoftReference<V> old = mTable.put(key, new SoftReference<V>(value));
11         if (old == null)
12             return null;
13         return old.get();
14     }
15     
16     public V get(K key) {
17         SoftReference<V> val = mTable.get(key);
18         if (val == null)
19             return null;
20         V ret = val.get();
21         if (ret == null)
22             mTable.remove(key);
23         return ret;
24     }
25     
26     public V remove(K k) {
27         SoftReference<V> v = mTable.remove(k);
28         if (v == null)
29             return null;
30         return v.get();
31     }
32 }