package org.fastcatsearch.ir.util; import java.util.HashMap; import java.util.Map; import org.fastcatsearch.ir.io.CharVector; public class CharVectorHashMap<V> extends HashMap<CharVector, V> { private boolean isIgnoreCase; public CharVectorHashMap() { super(); } public CharVectorHashMap(boolean isIgnoreCase) { this(2, isIgnoreCase); } public CharVectorHashMap(int initialCapacity, boolean isIgnoreCase) { super(initialCapacity); this.isIgnoreCase = isIgnoreCase; } public CharVectorHashMap(Map<CharVector, V> m, boolean isIgnoreCase) { super(m); this.isIgnoreCase = isIgnoreCase; } public boolean isIgnoreCase() { return isIgnoreCase; } @Override public V get(Object key) { CharVector charKey = (CharVector) key; if (isIgnoreCase) { if (!charKey.isIgnoreCase()) { charKey.setIgnoreCase(); V v = super.get(charKey); charKey.unsetIgnoreCase(); return v; } } return super.get(charKey); } @Override public boolean containsKey(Object key) { return this.get(key) != null; } @Override public V put(CharVector charKey, V value) { if (isIgnoreCase) { charKey.setIgnoreCase(); } return super.put(charKey, value); } }