package com.revolsys.collection.map; import java.util.AbstractSet; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import com.revolsys.collection.bplus.BPlusTreeMap; public class MapKeySetEntrySet<K, V> extends AbstractSet<Entry<K, V>> { private final Map<K, V> map; public MapKeySetEntrySet(final Map<K, V> map) { this.map = map; } @Override public void clear() { this.map.clear(); } /** * @see java.util.AbstractCollection#contains(java.lang.Object) */ @Override public boolean contains(final Object o) { if (o instanceof BPlusTreeMap.Entry) { @SuppressWarnings("unchecked") final Entry<K, V> e = (Entry<K, V>)o; final Entry<K, V> candidate = new MapKeyEntry<>(this.map, e.getKey()); return candidate != null && candidate.equals(e); } else { return false; } } @Override public Iterator<Map.Entry<K, V>> iterator() { return new MapKeySetEntryIterator<>(this.map); } @Override public boolean remove(final Object o) { return this.map.remove(o) != null; } @Override public int size() { return this.map.size(); } }