obtener name keys getkey example java hashmap

java - name - HashMap-obteniendo el primer valor clave



map string object get value (9)

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 recolectar el primer "Valor" Clave (es decir, 33)? Quiero almacenar tanto la "Clave" como el "Valor" en una variable separada.


¿Cómo podemos recoger el primer "valor" clave (es decir, 33)

Al usar youMap.get(keyYouHave) , puede obtener el valor.

desea almacenar tanto la "Clave" como el "Valor" en una variable separada

Sí, puede asignar eso a una variable.

Espera ......... no ha terminado.

Si usted (lógica de negocios) depende del orden de las inserciones y la recuperación, verá resultados extraños. El mapa no está ordenado, no se almacenarán en un pedido. Tenga en cuenta ese hecho. Use alguna alternativa para preservar su pedido. Probablemente un LinkedHashMap


Forma de hacer Java 8,

String firstKey = map.keySet().stream().findFirst().get();


Mejorando la respuesta de whoami. Dado que findFirst() devuelve un Optional , es una buena práctica verificar si hay un valor.

var optional = pair.keySet().stream().findFirst(); if (!optional.isPresent()) { return; } var key = optional.get();

Además, algunos comentaron que encontrar la primera clave de un HashSet no es confiable. Pero a veces tenemos pares HashMap ; es decir, en cada mapa tenemos una clave y un valor. En tales casos, es conveniente encontrar rápidamente la primera clave de un par de este tipo.


Para obtener el "primer" valor:

map.values().toArray()[0]

Para obtener el valor de la "primera" clave:

map.get(map.keySet().toArray()[0])

Nota: 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; podría usarlo para la implementación de su mapa si el orden de inserción es importante.


Puedes probar esto:

Map<String,String> map = new HashMap<>(); Map.Entry<String,String> entry = map.entrySet().iterator().next(); String key = entry.getKey(); String value = entry.getValue();

Tenga en cuenta que HashMap no garantiza el orden de inserción. Use LinkedHashMap para mantener el pedido intacto.

P.ej:

Map<String,String> map = new LinkedHashMap<>(); map.put("Active","33"); map.put("Renewals Completed","3"); map.put("Application","15"); Map.Entry<String,String> entry = map.entrySet().iterator().next(); String key= entry.getKey(); String value=entry.getValue(); System.out.println(key); System.out.println(value);

Salida:

Active 33


Recuerde que el orden de inserción no se respeta en un mapa en general. Prueba esto :

/** * Get the first element of a map. A map doesn''t guarantee the insertion order * @param map * @param <E> * @param <K> * @return */ public static <E,K> K getFirstKeyValue(Map<E,K> map){ K value = null; if(map != null && map.size() > 0){ Map.Entry<E,K> entry = map.entrySet().iterator().next(); if(entry != null) value = entry.getValue(); } return value; }

Lo uso solo cuando estoy seguro de que map.size() == 1 .


También puede intentar esto para obtener la primera entrada completa,

Map.Entry<String, String> entry = map.entrySet().stream().findFirst().get(); String key = entry.getKey(); String value = entry.getValue();

Esto para obtener solo la clave de la primera entrada,

String key = map.entrySet().stream().map(Map.Entry::getKey).findFirst().get(); // or better String key = map.keySet().stream().findFirst().get();

Esto para obtener solo el valor de la primera entrada,

String value = map.entrySet().stream().map(Map.Entry::getValue).findFirst().get(); // or better String value = map.values().stream().findFirst().get();

Además, en caso de que sepa lo que está haciendo y desee obtener el segundo elemento (igual para el tercero, etc.) de un mapa, debe intentar esto,

Map.Entry<String, String> entry = map.entrySet().stream().skip(1).findFirst().get(); String key = map.keySet().stream().skip(1).findFirst().get(); String value = map.values().stream().skip(1).findFirst().get();


También puedes probar a continuación:

Map.Entry<String, Integer> entry = myMap.firstEntry(); System.out.println("First Value = " + entry);


Tenga en cuenta que debe tener en cuenta que su flujo lógico nunca debe depender del acceso a los elementos HashMap en algún orden, simplemente porque los HashMap no están ordenados como Collection y eso no es lo que se pretende que hagan. (Puede leer más sobre colecciones ordenadas y clasificadas en esta publicación ).

Volviendo a la publicación, ya hiciste la mitad del trabajo al cargar la primera clave de elemento:

Object myKey = statusName.keySet().toArray()[0];

Simplemente llame a map.get(key) para obtener el valor respectivo:

Object myValue = statusName.get(myKey);