Je dois parcourir Google Multimap. Mais
Google Collections (maintenant Guava) est une bibliothèque Java 1.5 ... même en ignorant le manque de génériques dans Java 1.4, il utilise probablement des choses qui ont été ajoutées dans 1.5, ce qui le rend incompatible. Cela dit, il existe plusieurs façons de parcourir un Multimap
.
Vous pouvez parcourir toutes les valeurs:
for (Object value : multimap.values()) { ... }
Ou toutes les clés (une clé qui correspond à plusieurs valeurs à venir plusieurs fois dans l'itération):
for (Object key : multimap.keys()) { ... }
Ou l'ensemble de clés:
for (Object key : multimap.keySet()) { ... }
Ou les entrées:
for (Map.Entry entry : multimap.entries()) { ... }
Ou la valeur Collection
s:
for (Collection collection : multimap.asMap().values()) { ... }
Vous pouvez également obtenir le Collection
correspondant pour chaque touche de la keySet()
en utilisant get
comme décrit par bwawok.
Edit: Je n'ai pas pensé au fait que Java 1.4 n'avait pas non plus la boucle foreach, donc bien sûr chaque boucle ci-dessus devrait être écrite en utilisant les Iterator
s directement.
Je suis sur Java 6, mais cela devrait être assez proche ... désolé si j'ai raté quelque chose Java 1.4ish
Set keySet = listmultimap.keySet();
Iterator keyIterator = keySet.iterator();
while (keyIterator.hasNext() ) {
String key = (String) keyIterator.next();
List values = listmultimap.get( key );
}
Chaque get vous récupérera tout ce qui correspond à cette clé. Ensuite, vous pouvez soit les décoller, soit faire ce que vous voulez avec eux.
Lorsque vous utilisez la carte multi-goyave, les valeurs sont stockées dans Collection, pas List
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);
}
}
Un exemple minimal serait:
public class Test {
public static void main(String[] args) {
ListMultimap<String, String> multimap = ArrayListMultimap.create();
multimap.put("hello", " name");
multimap.put("hello", " name2");
multimap.put("world", " ocean");
for (String firstName : multimap.keySet()) {
List<String> lastNames = multimap.get(firstName);
System.out.println(firstName + " " + lastNames);
}
}
}
et la sortie:
world [ ocean]
hello [ name, name2]