ordenado metodos example entre diferencia diccionario declarar java java-6

metodos - Obtenga claves de HashMap en Java



map string string java (11)

Como le gustaría obtener el argumento ( United ) para el cual se da el valor ( 5 ), también podría considerar usar un mapa bidireccional (por ejemplo, proporcionado por Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/BiMap.html ).

Tengo un Hashmap en Java como este:

private Map<String, Integer> team1 = new HashMap<String, Integer>();

Entonces lo llené así:

team1.put("United", 5);

¿Cómo puedo obtener las llaves? Algo así como: team1.getKey() para devolver "United".


Esto es factible, al menos en teoría, si conoce el índice:

System.out.println(team1.keySet().toArray()[0]);

keySet() devuelve una lista, por lo que convierte la lista en una matriz.

El problema, por supuesto, es que un conjunto no promete mantener su orden. Si solo tiene un elemento en su HashMap, está bien, pero si tiene más que eso, es mejor recorrer el mapa, como lo han hecho otras respuestas.


Lo que haré es muy simple, pero la memoria inútil es mapear los valores con una clave y hacer lo opuesto para mapear las claves con un valor que lo haga:

private Map<Object, Object> team1 = new HashMap<Object, Object>();

es importante que use <Object, Object> para que pueda asignar keys:Value y Value:Keys como esta

team1.put("United", 5);

team1.put(5, "United");

Entonces, si usa team1.get("United") = 5 y team1.get(5) = "United"

Pero si utilizas algún método específico en uno de los objetos de 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;)


Mira esto.

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

Suponiendo que tiene un valor diferente para cada tecla, puede hacer algo como esto:

private String getKey(Integer value){ for(String key : team1.keySet()){ if(team1.get(key).equals(value)){ return key; //return the first found } } return null; }

O si no puede suponer que cada clave tiene un valor diferente:

private List<String> getKeys(Integer value){ List<String> keys = new ArrayList<String>(); for(String key : team1.keySet()){ if(team1.get(key).equals(value)){ keys.add(key); } } return keys; }

O usando JDK8

private Optional<String> getKey(Integer value){ return team1 .entrySet() .stream() .filter(e -> e.getValue().equals(value)) .map(e -> e.getKey()) .findFirst(); } private List<String> getKeys(Integer value){ return team1 .entrySet() .stream() .filter(e -> e.getValue().equals(value)) .map(e -> e.getKey()) .collect(Collectors.toList()); }


Para obtener Key y su valor

p.ej

private Map<String, Integer> team1 = new HashMap<String, Integer>(); team1.put("United", 5); team1.put("Barcelona", 6); for (String key:team1.keySet()){ System.out.println("Key:" + key +" Value:" + team1.get(key)+" Count:"+Collections.frequency(team1, key));// Get Key and value and count }

Se imprimirá: Clave: Valor Unido: 5 Clave: Valor de Barcelona: 6


Prueba este sencillo programa:

public class HashMapGetKey { public static void main(String args[]) { // create hash map HashMap map = new HashMap(); // populate hash map map.put(1, "one"); map.put(2, "two"); map.put(3, "three"); map.put(4, "four"); // get keyset value from map Set keyset=map.keySet(); // check key set values System.out.println("Key set values are: " + keyset); } }


Puede recuperar todas las claves del Map utilizando el método keySet() . Ahora, si lo que necesita es obtener una clave dado su valor , esa es una cuestión completamente diferente y Map no lo ayudará allí; necesitaría una estructura de datos especializada, como BidiMap (un mapa que permite la búsqueda bidireccional entre clave y valores) de las Colecciones de Commons de Apache; también tenga en cuenta que varias claves diferentes podrían asignarse al mismo valor.


Si solo necesitas algo simple y más de una verificación.

public String getKey(String key) { if(map.containsKey(key) { return key; } return null; }

Entonces puedes buscar cualquier clave.

System.out.println( "Does this key exist? : " + getKey("United") );


Un HashMap contiene más de una clave. Puede usar keySet() para obtener el conjunto de todas las claves.

team1.put("foo", 1); team1.put("bar", 2);

almacenará 1 con la tecla "foo" y 2 con la tecla "bar" . Para iterar sobre todas las teclas:

for ( String key : team1.keySet() ) { System.out.println( key ); }

imprimirá "foo" y "bar" .


private Map<String, Integer> _map= new HashMap<String, Integer>(); Iterator<Map.Entry<String,Integer>> itr= _map.entrySet().iterator(); //please check while(itr.hasNext()) { System.out.println("key of : "+itr.next().getKey()+" value of Map"+itr.next().getValue()); }


public class MyHashMapKeys { public static void main(String a[]){ HashMap<String, String> hm = new HashMap<String, String>(); //add key-value pair to hashmap hm.put("first", "FIRST INSERTED"); hm.put("second", "SECOND INSERTED"); hm.put("third","THIRD INSERTED"); System.out.println(hm); Set<String> keys = hm.keySet(); for(String key: keys){ System.out.println(key); } } }