A continuación se muestran los valores que contiene el HashMap
statusName {Active=33, Renewals Completed=3, Application=15}
Código Java para obtener la primera clave (es decir, activa)
Object myKey = statusName.keySet().toArray()[0];
¿Cómo podemos recopilar el primer "Valor" clave (es decir, 33)? Quiero almacenar tanto la "Clave" como el "Valor" en una variable separada.
HashMap
entradas están desordenadas y, por lo tanto, "primero" podría cambiar cada vez que modifique el mapa?HashMap
? Si lo modifica, puede obtener los resultados en un orden completamente diferente.Respuestas:
Puedes probar esto:
Tenga en cuenta
HashMap
que no garantiza el pedido de inserción. Utilice aLinkedHashMap
para mantener el orden intacto.P.ej:
Salida:
fuente
com.google.gson.internal.LinkedTreeMap cannot be cast to...
... mi clase que dije en lugar de laString
en el lugar correcto ... no puedo encontrar la respuesta en líneaGson
para convertir el objeto de valor enString
ay luego analizarlo de nuevo a mi tipo de clase. Es feo, pero realmente no pude encontrar ninguna otra solución para algo que es tan fácil de hacer en otros idiomas (ahora estoy aprendiendo Java)Para obtener el "primer" valor:
Para obtener el valor de la "primera" clave:
Nota: el código anterior probado y funciona.
Digo "primero" porque las entradas de HashMap no están ordenadas.
Sin embargo, un LinkedHashMap itera sus entradas en el mismo orden en que se insertaron; puede usar eso para la implementación de su mapa si el orden de inserción es importante.
fuente
Forma de hacer Java 8,
String firstKey = map.keySet().stream().findFirst().get();
fuente
También puede probar esto para obtener la primera entrada completa,
Esto para obtener solo la clave de la primera entrada,
Esto para obtener solo el valor de la primera entrada,
Además, en caso de que sepa lo que está haciendo y desee obtener el segundo elemento (lo mismo para el tercero, etc.) de un mapa, debe probar esto,
fuente
Al usarlo
youMap.get(keyYouHave)
, puede obtener el valor de la misma.Sí, puede asignar eso a una variable.
Espera ......... no ha terminado.
Si usted (lógica empresarial) depende del orden de inserciones y recuperaciones, verá resultados extraños. El mapa no está ordenado, no se almacenarán en un pedido. Tenga en cuenta ese hecho. Utilice alguna alternativa para conservar su pedido. Probablemente un
LinkedHashMap
fuente
Tenga en cuenta que debe tener en cuenta que su flujo lógico nunca debe depender del acceso a los
HashMap
elementos en algún orden, simplemente porque losHashMap
s no están ordenadosCollection
y eso no es lo que pretenden hacer. (Puede leer más sobre colecciones ordenadas y clasificadoras en esta publicación ).Volviendo a la publicación, ya hiciste la mitad del trabajo cargando la clave del primer elemento:
Simplemente llame
map.get(key)
para obtener el valor respectivo:fuente
Recuerde que el orden de inserción no se respeta en un mapa en general. Prueba esto :
Solo uso esto cuando estoy seguro de eso
map.size() == 1
.fuente
Mejorando la respuesta de Whoami. Dado que
findFirst()
devuelve unOptional
, es una buena práctica comprobar si hay un valor.Además, algunos comentaron que encontrar la primera clave de a
HashSet
no es confiable. Pero a veces tenemosHashMap
parejas; es decir, en cada mapa tenemos una clave y un valor. En tales casos, es conveniente encontrar rápidamente la primera clave de dicho par.fuente
También es una buena forma de hacer esto :)
fuente
También puede probar a continuación:
fuente