Вы могли использовать CaseInsensitiveMap от Наборов палаты общин Apache.
Было бы возможно реализовать Ваше собственное переопределение Карты, помещал/получал методы?
public class CaseInsensitiveMap extends HashMap<String, String> {
...
put(String key, String value) {
super.put(key.toLowerCase(), value);
}
get(String key) {
super.get(key.toLowercase());
}
}
Этот подход не вынуждает Вас изменить свой "ключевой" тип, но свою Реализацию Map.
Вам нужен класс обертки для Вашего Строкового ключа с нечувствительным к регистру, равняется () и хэш-код () реализация. Используйте это вместо Строки для ключа Карты.
Видят реализацию в качестве примера в http://www.java.happycodings.com/Java_Util_Package/code3.html , я нашел его за 2 минуты поиска с помощью Google. Выглядит разумным мне, хотя я никогда не использовал его.
Три очевидных решения, которые приходят на ум:
Нормализуют случай перед использованием Строки как ключ (не турецкие работы локали по-другому по сравнению с остальной частью мира).
Использование тип специального объекта, разработанный, чтобы использоваться в качестве ключа. Это - общая идиома для контакта с составными ключами.
Использование TreeMap с Компаратором, который нечувствителен к регистру (возможно ОСНОВНАЯ или ВТОРИЧНАЯ сила java.text. Сортировально-подборочная машина). К сожалению, библиотека Java не имеет Компаратора эквивалентным для хэш-кода/равняться.