Intereting Posts
Макет не отображает контент при загрузке через новую активность в Xamarin Android-браузер делает границы неправильными, если радиус границы меньше общей ширины границы Как я могу использовать SensorManager.getOrientation для управления наклоном, например «My Paper Plane»? Добавить дополнительную информацию о пользователе с помощью firebase Программно создайте фон из текстового поля из выделенного в android Я могу получить Редактировать текст оставить событие Не удалось решить: com.google.android.gms: play-services-measurement: 9.6.1 Внедрение рекомендаций по дизайну Google для слайдеров Используйте метод .GetMapAsync вместо .getMap с сервисами Google Play (Xamarin) Как я могу сделать мои строки списка разной высоты Как реализовать «Таблицы данных» (компонент дизайна материалов) в android? Различные размеры шрифта для разных размеров экрана Несколько файлов dex определяют Lcom / google / firebase / FirebaseException LibGDX – Shader работает на рабочем столе, но не на Android ClassNotFoundException, хотя содержащий JAR является частью сборки

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

Кто-то сказал, что хешмапы довольно медленные. Поэтому мне просто интересно, использовать ли 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 – это путь. Это довольно много непобедимых, когда количество объектов очень велико (в миллиардах или более).