¿Por qué utilizar un hashmap?
Alguien me dijo que los hashmaps son bastante lentos. Así que me pregunto si utilizar hashmap o una lógica de caso de conmutador.
Mi requisito es esto. Tengo un conjunto de CountryNames y CountryCodes. Mi ListView muestra los nombres de los países. Cuando se hace clic en un elemento de nombre de país, debo Tostar el CountryCode.
- Solicitud de switch / case con boolean
- Cambiar del diseño main.xml a otro diseño
- Android: El botón OnClickListener no funciona
- Interruptor multinivel Android
- Menú emergente personalizado de Android con conmutador
En tal escenario, ¿debería mantener un HashMap de CountryNames and Codes y acceder a esto para obtener el código correspondiente ?:
myMap.put("US", 355); myMap.put("UK", 459); //etc
¿O es mejor escribir un caso de conmutación así
switch (vCountryNamePos): { case 0: //US vCountryCode = 355; break; case 1: //UK vCountryCode = 459; break; //etc }
¿Cuál es más rápido? Si no es Hashmaps, ¿en qué escenarios prácticos se utilizará un Mapa?
Kiki
- Cambiar instrucción con cadena como argumento en Android
- ¿O declaración en el interruptor / caso?
- ¿Reutilizar las actividades anteriores?
- ¿Usando la cadena del recurso XML en el interruptor?
- Cómo cambiar la altura y el ancho de Switch en Android
- Actividad del conmutador androide de un hilo no ui
- ¿Puede utilizar declaraciones condicionales en el caso de conmutación en Android?
- Un problema Java de conmutación: las expresiones de caso deben ser expresiones constantes
Para dos valores, un interruptor será más rápido. Un hashmap siempre verificará al menos la igualdad de la clave, por lo que no puede superar una o dos pruebas .equals ().
Para muchos valores, un hash será más rápido. Un interruptor tiene que probar cada valor hasta que encuentre el derecho.
Para un pequeño número de valores (digamos hasta 10 o así), prefieren un interruptor. Va a ser más ligero y más rápido.
Para un gran número de valores (en más de 50), prefieren un hash. Un hash no tendrá que comprobar todos los valores, por lo que será más rápido que un interruptor cuando el número de valores aumenta. Para valores de 10 ~ 50, te sugiero que hagas lo que sientes es más legible porque el rendimiento va a ser similar.
Ahora si usted está mirando en el funcionamiento extremo en las secuencias estáticas conocidas en tiempo de la compilación, usted puede mirar en herramientas que generan código como gnuperf.
Si usted no sabe sus secuencias en tiempo de compilación, pero sabes que van a ser decentemente corto y decentemente uniforme en longitud, o con prefijos comunes, probablemente va a ser más rápido con una estructura de datos Trie.
Si desea mantener el rendimiento en un gran número de cadenas muy heterogéneas, o en objetos que no pueden ser cadenas, entonces HashMap es el camino a seguir. Es bastante inmejorable cuando el número de objetos es muy alto (en miles de millones o más).
- ¿Cómo puedo obtener más información sobre "Esperando que el dispositivo de destino esté en línea" en Android Studio?
- El diálogo de inicio de sesión de Facebook desaparece después de la carga