
org.holoeverywhere.util.WeaklyMap Maven / Gradle / Ivy
The newest version!
package org.holoeverywhere.util;
import java.lang.ref.WeakReference;
import java.util.AbstractCollection;
import java.util.AbstractMap;
import java.util.AbstractSet;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
public class WeaklyMap extends AbstractMap {
private static final class WeaklyEntry implements Entry {
private final Entry> mEntry;
public WeaklyEntry(Entry> entry) {
mEntry = entry;
}
@Override
public K getKey() {
return mEntry.getKey();
}
@Override
public V getValue() {
final WeaklyReference ref = mEntry.getValue();
return ref == null ? null : ref.get();
}
@Override
public V setValue(V object) {
final WeaklyReference ref = mEntry.setValue(new WeaklyReference(object));
return ref == null ? null : ref.get();
}
}
private static final class WeaklyReference extends WeakReference {
public WeaklyReference(T r) {
super(r);
}
@Override
public boolean equals(Object o) {
if (!(o instanceof WeaklyReference)) {
return false;
}
final Object o1 = ((WeaklyReference>) o).get();
final Object o2 = get();
return o1 != null && o2 != null && o1 == o2;
}
}
private final WeakHashMap> mMap;
public WeaklyMap() {
mMap = new WeakHashMap>();
}
@Override
public void clear() {
mMap.clear();
}
@Override
public boolean containsKey(Object key) {
return mMap.containsKey(key);
}
@Override
public boolean containsValue(Object value) {
return mMap.containsValue(new WeaklyReference
© 2015 - 2025 Weber Informatics LLC | Privacy Policy