Tengo un Hashmap en Java como este:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Luego lo lleno así:
team1.put("United", 5);
¿Cómo puedo obtener las llaves? Algo así como: team1.getKey()
volver "Unidos".
java
data-structures
java-6
masb
fuente
fuente
team1.getKey()
devolver si: (1) el mapa está vacío o (2) si contiene varias claves?int
debe usarse para solteros como este.Respuestas:
UNA
HashMap
contiene más de una clave. Puede usarkeySet()
para obtener el conjunto de todas las claves.se almacenará
1
con llave"foo"
y2
con llave"bar"
. Para iterar sobre todas las claves:imprimirá
"foo"
y"bar"
.fuente
List<String> keys = new ArrayList<>(mLoginMap.keySet());
Esto es factible, al menos en teoría, si conoce el índice:
keySet()
devuelve un conjunto, por lo que convierte el conjunto en una matriz.El problema, por supuesto, es que un conjunto no promete mantener su pedido. Si solo tiene un elemento en su HashMap, es bueno, pero si tiene más que eso, es mejor recorrer el mapa, como lo han hecho otras respuestas.
fuente
HashMap
. Buen espectaculo.Mira esto.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
(Úselo
java.util.Objects.equals
porque HashMap puede contenernull
)Usando JDK8 +
Más "genérico" y lo más seguro posible
O si estás en JDK7.
fuente
HashMap
Las llaves son únicas.Puede recuperar toda la
Map
llaves 's utilizando el métodokeySet()
. Ahora, si lo que necesita es obtener una clave dado su valor , ese es un asunto completamente diferente yMap
no lo ayudará allí; necesitaría una estructura de datos especializada, comoBidiMap
(un mapa que permita la búsqueda bidireccional entre clave y valores) de las Colecciones de Apache's Commons , también tenga en cuenta que varias claves diferentes podrían asignarse al mismo valor.fuente
Como desea obtener un argumento (
United
) para el que se proporciona el valor (5
), también puede considerar el uso de un mapa bidireccional (por ejemplo, proporcionado por Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google /common/collect/BiMap.html ).fuente
Si solo necesita algo simple y más de una verificación.
Luego puede buscar cualquier clave.
fuente
fuente
next()
dos veces en el ciclo significa que imprimirá las teclas impares junto con los valores pares.Utilice la operación funcional para una iteración más rápida.
team1.keySet().forEach((key) -> { System.out.println(key); });
fuente
Una solución puede ser, si conoce la posición de la clave, convertir las claves en una matriz de cadenas y devolver el valor en la posición:
fuente
Prueba este sencillo programa:
fuente
fuente
Para obtener claves en HashMap, tenemos el método keySet () que está presente en el
java.util.Hashmap
paquete. ex:Ahora las claves tendrán todas sus claves disponibles en el mapa. ej .: [clave1, clave2]
fuente
java,util.HashMap
es una clase, no un paquete, y no hay nada aquí que no estuviera aquí hace cinco años.Lo que haré es muy simple pero desperdiciar memoria es mapear los valores con una clave y hacer lo contrario para mapear las claves con un valor haciendo esto:
private Map<Object, Object> team1 = new HashMap<Object, Object>();
es importante que use
<Object, Object>
para poder mapearkeys:Value
yValue:Keys
asíteam1.put("United", 5);
team1.put(5, "United");
Entonces si usas
team1.get("United") = 5
yteam1.get(5) = "United"
Pero si usas algún método específico en uno de los objetos en los pares, seré mejor si haces otro mapa:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
y entonces
team1.put("United", 5);
team1Keys.put(5, "United");
y recuerda, mantenlo simple;)
fuente
Para obtener clave y su valor
p.ej
Imprimirá: Clave: United Valor: 5 Clave: Barcelona Valor: 6
fuente