Зачем использовать хэш-карту?

Кто-то сказал, что хешмапы довольно медленные. Поэтому мне просто интересно, использовать ли hashmap или логику коммутатора.

Мое требование таково. У меня есть набор CountryNames и CountryCodes. В моем списке ListView отображаются имена стран. Когда щелкнут элемент названия страны, мне нужно Toast CountryCode.

В таком случае я должен поддерживать HashMap имен и кодов стран и получать доступ к этому, чтобы получить соответствующий код ?:

myMap.put("US", 355); myMap.put("UK", 459); //etc 

Или лучше написать такой случай с переключателем

 switch (vCountryNamePos): { case 0: //US vCountryCode = 355; break; case 1: //UK vCountryCode = 459; break; //etc } 

Что быстрее? Если не Hashmaps, то в каких практических сценариях будет использоваться карта?

-Kiki

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

Для небольшого числа значений (скажем, до 10 или около того) предпочитайте переключатель. Это будет легче и быстрее.
Для большого количества значений (более 50) предпочитайте хэш. Хешу не нужно проверять все значения, поэтому он будет быстрее, чем переключатель, когда число значений увеличивается. Для 10 ~ 50 значений я предлагаю вам делать то, что, по вашему мнению, более читаемо, потому что производительность будет похожей.

Теперь, если вы изучаете экстремальную производительность в статических строках, известных во время компиляции, вы можете изучить инструменты генерации кода, такие как gnuperf.
Если вы не знаете свои строки во время компиляции, но знаете, что они будут прилично короткими и прилично однородными по длине или с общими префиксами, вы, вероятно, будете быстрее всего иметь структуру данных Trie.
Если вы хотите сохранить производительность на большом количестве очень разнородных строк или на объектах, которые могут не быть строками, то HashMap – это путь. Это довольно много непобедимых, когда количество объектов очень велико (в миллиардах или более).