61
задан 30 June 2012 в 23:05

4 ответа

Вы могли использовать CaseInsensitiveMap от Наборов палаты общин Apache.

42
ответ дан 31 October 2019 в 15:15

Было бы возможно реализовать Ваше собственное переопределение Карты, помещал/получал методы?

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.

31
ответ дан 31 October 2019 в 15:15

Вам нужен класс обертки для Вашего Строкового ключа с нечувствительным к регистру, равняется () и хэш-код () реализация. Используйте это вместо Строки для ключа Карты.

Видят реализацию в качестве примера в http://www.java.happycodings.com/Java_Util_Package/code3.html , я нашел его за 2 минуты поиска с помощью Google. Выглядит разумным мне, хотя я никогда не использовал его.

14
ответ дан 31 October 2019 в 15:15

Три очевидных решения, которые приходят на ум:

  • Нормализуют случай перед использованием Строки как ключ (не турецкие работы локали по-другому по сравнению с остальной частью мира).

  • Использование тип специального объекта, разработанный, чтобы использоваться в качестве ключа. Это - общая идиома для контакта с составными ключами.

  • Использование TreeMap с Компаратором, который нечувствителен к регистру (возможно ОСНОВНАЯ или ВТОРИЧНАЯ сила java.text. Сортировально-подборочная машина). К сожалению, библиотека Java не имеет Компаратора эквивалентным для хэш-кода/равняться.

3
ответ дан 31 October 2019 в 15:15

Другие вопросы по тегам:

Похожие вопросы: