Comment itérer sur un TreeMap?

Duplication possible:
Comment effectuer une itération sur chaque entrée d’une carte?

Je veux itérer sur un TreeMap , et pour toutes les clés qui ont une valeur particulière, je veux qu’elles soient ajoutées à un nouveau TreeMap . Comment puis-je faire ceci?

En supposant le type TreeMap :

 for(Map.Entry entry : treeMap.entrySet()) { Ssortingng key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key + " => " + value); } 

(les types clé et valeur peuvent être n’importe quelle classe bien sûr)

  //create TreeMap instance TreeMap treeMap = new TreeMap(); //add key value pairs to TreeMap treeMap.put("1","One"); treeMap.put("2","Two"); treeMap.put("3","Three"); /* get Collection of values contained in TreeMap using Collection values() */ Collection c = treeMap.values(); //obtain an Iterator for Collection Iterator itr = c.iterator(); //iterate through TreeMap values iterator while(itr.hasNext()) System.out.println(itr.next()); 

ou:

  for (Map.Entry entry : treeMap.entrySet()) { V value = entry.getValue(); K key = entry.getKey(); } 

ou:

  // Use iterator to display the keys and associated values System.out.println("Map Values Before: "); Set keys = map.keySet(); for (Iterator i = keys.iterator(); i.hasNext();) { Integer key = (Integer) i.next(); Ssortingng value = (Ssortingng) map.get(key); System.out.println(key + " = " + value); } 

Juste pour signaler la manière générique d’itérer sur n’importe quelle carte:

  private  void iterateOverMap(Map map) { for (Map.Entry entry : map.entrySet()) { System.out.println("key ->" + entry.getKey() + ", value->" + entry.getValue()); } } 

En utilisant Google Collections , en supposant que K est votre type de clé:

 Maps.filterKeys(treeMap, new Predicate() { @Override public boolean apply(K key) { return false; //return true here if you need the entry to be in your new map }}); 

Vous pouvez utiliser filterEnsortinges place si vous avez également besoin de la valeur.