Would it be possible to implement your own Map overriding put/get methods ?
public class CaseInsensitiveMap extends HashMap<String, String> {
...
put(String key, String value) {
super.put(key.toLowerCase(), value);
}
get(String key) {
super.get(key.toLowercase());
}
}
This approach does not force you to change your "key" type but your Map implementation.