【问题标题】:java hashmap key iterationjava hashmap键迭代
【发布时间】:2011-03-21 15:49:11
【问题描述】:

有什么方法可以遍历 java Hashmap 并打印出作为 Hashmap 一部分的每个键的所有值?

【问题讨论】:

    标签: java iteration hashmap


    【解决方案1】:

    是的,您可以通过获取地图的entrySet() 来做到这一点。例如:

    Map<String, Object> map = new HashMap<String, Object>();
    
    // ...
    
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
    }
    

    (当然,将 StringObject 替换为您的特定 Map 具有的类型 - 上面的代码只是一个示例)。

    【讨论】:

      【解决方案2】:

      对于 for-each loop,使用 Map.keySet() 迭代键,使用 Map.values() 迭代值,使用 Map.entrySet() 迭代键/值对。

      请注意,所有这些都是用于获取它们的地图的直接视图,因此您对三者中的任何一个或地图本身所做的任何修改都会反映到所有其他人。

      【讨论】:

        【解决方案3】:
        public class abcd {
            public static void main(String[] args)
            {
               Map<Integer, String> testMap = new HashMap<Integer, String>();
                testMap.put(10, "a");
                testMap.put(20, "b");
                testMap.put(30, "c");
                testMap.put(40, "d");
                for (Entry<Integer, String> entry : testMap.entrySet()) {
                    Integer key=entry.getKey();
                    String value=entry.getValue();
                }
            }
        }
        

        【讨论】:

          【解决方案4】:
          for (Map.Entry<T,U> e : map.entrySet())
          {
              T key = e.getKey();
              U value = e.getValue();
              .
              .
              .
          }
          

          此外,如果您使用 LinkedHashMap 作为实现,您将按照插入键/值对的顺序进行迭代。如果这不重要,请使用 HashMap。

          【讨论】:

            【解决方案5】:
            hashmap.keySet().iterator()
            

            使用for 循环对其进行迭代。

            然后使用hashmap.get(item) 获取单个值,

            或者只使用entrySet() 来获取值的迭代器。

            【讨论】:

            • 或者,取决于“值”中 ping 的含义,hashmap.values().iterator()
            【解决方案6】:

            Java 8 添加了Map.forEach,您可以像这样使用它:

            map.forEach((k, v) -> System.out.println("key=" + k + " value=" + v));
            

            如果你想更新值,还有replaceAll

            map.replaceAll((k, v) -> {
                int newValue = v + 1;
                System.out.println("key=" + k + " value=" + v + " new value=" + newValue);
                return newValue;
            });
            

            【讨论】:

              【解决方案7】:

              请保持简单:

              HashMap<String,String> HeyHoLetsGo = new HashMap();
              
              HeyHoLetsGo.put("I", "wanna be your dog");
              HeyHoLetsGo.put("Sheena", "is a punk rocker");
              HeyHoLetsGo.put("Rudie", "can't fail");
              
              for ( String theKey : HeyHoLetsGo.keySet() ){
                  System.out.println(theKey + " "+HeyHoLetsGo.get(theKey));
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-12-02
                • 2014-01-02
                • 2015-09-19
                • 1970-01-01
                • 1970-01-01
                • 2011-03-16
                • 2015-04-13
                • 1970-01-01
                相关资源
                最近更新 更多