首页 文章

如何迭代TreeMap? [重复]

提问于
浏览
118

可能重复:如何迭代Map中的每个条目?

我想迭代 TreeMap ,并且对于具有特定值的所有键,我希望将它们添加到新的 TreeMap . 我怎样才能做到这一点?

4 回答

  • 5

    假设类型TreeMap <String,Integer>:

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

    (键和值类型可以是任何类别的课程)

  • 199
    //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());
    

    要么:

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

    要么:

    // 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);
       }
    
  • 1

    只是指出迭代任何 Map 的通用方法:

    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());
        }
        }
    
  • 25

    使用Google Collections,假设K是您的密钥类型:

    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
      }});
    

    如果您还需要该值,也可以使用 filterEntries .

相关问题