recorrer example ejemplo java guava multimap

example - recorrer un linkedhashmap java



Cómo iterar a través de Google Multimap (3)

Tengo que iterar a través de google multimap. Pero

  1. Estoy usando jdk 1.4 y no puedo cambiar a una versión más alta. Así que no puedo usar características genéricas.
  2. Mi multimapa puede tener múltiples valores para una clave.
  3. Puede haber una situación en la que un valor de multimapa sea multimapa en sí mismo

Cuando se utiliza multimapa de guayaba, los valores se almacenan en Colección, no en Lista

Set<String> keys = multiMap.keySet(); for (String keyprint : keys) { System.out.println("Key = " + keyprint); Collection<String> values = multiMap.get(keyprint); for(String value : values){ System.out.println("Value= "+ value); } }


Estoy en Java 6, pero esto debería estar bastante cerca ... perdón si me perdí algo Java 1.4ish

Set keySet = listmultimap.keySet(); Iterator keyIterator = keySet.iterator(); while (keyIterator.hasNext() ) { String key = (String) keyIterator.next(); List values = listmultimap.get( key ); }

Cada vez que recibas te devolverá todo lo que coincide con esa clave. Luego puedes quitarlos o hacer lo que quieras con ellos.


Google Collections (ahora Guava) es una biblioteca de Java 1.5 ... incluso ignorando la falta de genéricos en Java 1.4, es probable que use cosas que se agregaron en 1.5, lo que la hace incompatible. Dicho esto, hay varias formas de iterar a través de un Multimap .

Puedes iterar a través de todos los valores:

for (Object value : multimap.values()) { ... }

O todas las claves (una clave que se asigna a múltiples valores que aparecen varias veces en la iteración):

for (Object key : multimap.keys()) { ... }

O el conjunto de teclas:

for (Object key : multimap.keySet()) { ... }

O las entradas:

for (Map.Entry entry : multimap.entries()) { ... }

O el valor de Collection s:

for (Collection collection : multimap.asMap().values()) { ... }

También puede obtener la Collection correspondiente para cada clave en keySet() usando get como lo describe bwawok.

Edición: No pensé en el hecho de que Java 1.4 tampoco tuviera el bucle foreach, así que, por supuesto, cada bucle anterior tendría que escribirse usando los Iterator directamente.