
org.molgenis.util.CaseInsensitiveLinkedHashMap Maven / Gradle / Ivy
package org.molgenis.util;
import java.util.AbstractMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.Sets;
/**
* LinkedHashMap with a string as key. The key is caseinsensitive.
*
*
*
* @param
*/
public class CaseInsensitiveLinkedHashMap extends LinkedHashMap
{
private static final long serialVersionUID = -5765647414721292250L;
private final Map keyMap = new LinkedHashMap();
@Override
public V put(String key, V value)
{
if (key == null) throw new IllegalArgumentException("key is null");
keyMap.put(key.toLowerCase(), key);
return super.put(key.toLowerCase(), value);
}
@Override
public void putAll(Map extends String, ? extends V> m)
{
for (Map.Entry extends String, ? extends V> entry : m.entrySet())
{
put(entry.getKey(), entry.getValue());
}
}
@Override
public V remove(Object key)
{
if (!(key instanceof String))
{
return null;
}
String keyStr = ((String) key).toLowerCase();
keyMap.remove(keyStr);
return super.remove(keyStr);
}
@Override
public V get(Object key)
{
if (!(key instanceof String))
{
return null;
}
return super.get(((String) key).toLowerCase());
}
@Override
public Set keySet()
{
// Return the original keys
Set keys = super.keySet();
Set originalKeys = Sets.newLinkedHashSetWithExpectedSize(keys.size());
for (String key : keys)
{
originalKeys.add(keyMap.get(key));
}
return originalKeys;
}
@Override
public Set> entrySet()
{
Set> entries = Sets.newLinkedHashSet();
for (String key : keySet())
{
entries.add(new AbstractMap.SimpleEntry(key, get(key)));
}
return entries;
}
@Override
public boolean equals(Object o)
{
if (!(o instanceof CaseInsensitiveLinkedHashMap>))
{
return false;
}
CaseInsensitiveLinkedHashMap> other = (CaseInsensitiveLinkedHashMap>) o;
if (!keySet().equals(other.keySet()))
{
return false;
}
for (java.util.Map.Entry entry : entrySet())
{
String key = entry.getKey();
Object value = entry.getValue();
if (value == null)
{
if (other.get(key) != null)
{
return false;
}
}
else
{
if (!get(key).equals(other.get(key)))
{
return false;
}
}
}
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy