LinkedStringMap.java
package com.github.celldynamics.quimp.plugin.utils;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.function.BiFunction;
/**
* Extension of LinkedHashMap that assumes that Key is String and it is case insensitive.
*
* <p>All keys are converted to lower case.
*
* @author p.baniukiewicz
* @param <V>
*
*/
public class LinkedStringMap<V> extends LinkedHashMap<String, V> {
private static final long serialVersionUID = -8577387803055420569L;
/**
* Default constructor.
*/
public LinkedStringMap() {
}
/**
* LinkedStringMap.
*
* @param initialCapacity initialCapacity
*/
public LinkedStringMap(int initialCapacity) {
super(initialCapacity);
}
/*
* (non-Javadoc)
*
* @see java.util.HashMap#put(java.lang.Object, java.lang.Object)
*/
@Override
public V put(String key, V value) {
return super.put(key.toLowerCase(), value);
}
/**
* Get the value of key.
*
* @param key key
* @return value for key
* @see java.util.HashMap#get(java.lang.Object)
*/
public V get(String key) {
return super.get(key.toLowerCase());
}
/**
* containsKey.
*
* @param key key
* @return true if contains key
* @see java.util.HashMap#containsKey(java.lang.Object)
*/
public boolean containsKey(String key) {
return super.containsKey(key.toLowerCase());
}
/*
* (non-Javadoc)
*
* @see java.util.HashMap#putAll(java.util.Map)
*/
@Override
public void putAll(Map<? extends String, ? extends V> m) {
for (Map.Entry<? extends String, ? extends V> e : m.entrySet()) {
put(e.getKey(), e.getValue());
}
}
/**
* Remove key.
*
* @param key key
* @return value removed
* @see java.util.HashMap#remove(java.lang.Object)
*/
public V remove(String key) {
return super.remove(key.toLowerCase());
}
/**
* Remove key.
*
* @param key key
* @param value value
* @return true if removed
* @see java.util.HashMap#remove(java.lang.Object, java.lang.Object)
*/
public boolean remove(String key, Object value) {
return super.remove(key.toLowerCase(), value);
}
/*
* (non-Javadoc)
*
* @see java.util.HashMap#putIfAbsent(java.lang.Object, java.lang.Object)
*/
@Override
public V putIfAbsent(String key, V value) {
return super.putIfAbsent(key.toLowerCase(), value);
}
/*
* (non-Javadoc)
*
* @see java.util.HashMap#replace(java.lang.Object, java.lang.Object, java.lang.Object)
*/
@Override
public boolean replace(String key, V oldValue, V newValue) {
return super.replace(key.toLowerCase(), oldValue, newValue);
}
/*
* (non-Javadoc)
*
* @see java.util.HashMap#replace(java.lang.Object, java.lang.Object)
*/
@Override
public V replace(String key, V value) {
return super.replace(key.toLowerCase(), value);
}
/**
* This method is not supported.
*
* @see java.util.HashMap#replaceAll(java.util.function.BiFunction)
*/
@Override
public void replaceAll(BiFunction<? super String, ? super V, ? extends V> function) {
throw new UnsupportedOperationException("not supported");
}
}