如何迭代TreeMap?

Cli*_*ote 133 java collections treemap

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

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

Zed*_*Zed 222

假设类型TreeMap <String,Integer>:

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

  System.out.println(key + " => " + value);
}
Run Code Online (Sandbox Code Playgroud)

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

  • 仅供参考,EntrySet是迭代任何Map的首选方式,因为EntrySets是通过规范反射的,并且总是表示Map中的数据状态,即使下面的Map会发生变化. (5认同)
  • 首选谁? (5认同)
  • 这会给出订购的价值吗? (5认同)
  • 否。 TreeMap 按 Key 值排序。 (2认同)

kar*_*m79 25

    //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());
Run Code Online (Sandbox Code Playgroud)

要么:

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

要么:

   // 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);
   }
Run Code Online (Sandbox Code Playgroud)


Pri*_*shi 5

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

 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());
    }
    }
Run Code Online (Sandbox Code Playgroud)