137 votes

Comment effectuer une itération sur un TreeMap?

Double Possible:
Comment puis-je effectuer une itération sur chaque Entrée dans une Carte?

Je veux effectuer une itération sur un treeMap, et pour tous " de la clé, qui ont une valeur particulière, je veux qu'ils soient ajoutés à une nouvelle TreeMap. Comment puis-je faire cela? Les exemples de Code serait préférée.

228voto

Zed Points 27408

En supposant que le type TreeMap<String,Integer> :

for(Map.Entry<String,Integer> entry : treeMap.entrySet()) {
  String key = entry.getKey();
  Integer value = entry.getValue();

  System.out.println(key + " => " + value);
}

(clés et types de Valeur peut être n'importe quelle classe de cours)

27voto

karim79 Points 178055
    //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<K,V> 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();
     String value = (String) map.get(key);
     System.out.println(key + " = " + value);
   }

6voto

Priyank Doshi Points 3105

Juste pour souligner le générique de chemin à parcourir toute la carte:

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

1voto

Jorn Points 5202

À l'aide de Google Collections, en supposant que K est votre type de clé:

Maps.filterKeys(treeMap, new Predicate<K>() {
  @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 filterEntries à la place si vous avez besoin de la valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X