【问题标题】:Java HashMap put in an enhanced for loop just like an ArrayListJava HashMap 像 ArrayList 一样放入了增强的 for 循环
【发布时间】:2015-03-08 04:32:38
【问题描述】:

例如,我可以像这样循环ArrayList

for (String temp : arraylist)

我可以使用类似的方法循环一个 HashMap 吗?

【问题讨论】:

  • 你为什么不试试?
  • Yes..

标签: java for-loop arraylist hashmap


【解决方案1】:

您可以迭代键、条目或值。

for (String key : map.keySet()) {
    String value = map.get(key);
}

for (String value : map.values()) {
}

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

这是假设您的地图具有字符串键和字符串值。

【讨论】:

  • 你甚至可以为 (String temp: map.values()
【解决方案2】:

您不能像在 Java 中那样直接循环 Map

但是,您可以循环键:

for (SomeKeyObject key : map.keySet())

价值观:

for (SomeValueObject value : map.values())

甚至是它的条目:

for (Map.Entry<SomeKeyObject, SomeValueObject> entry : map.entrySet())

【讨论】:

    【解决方案3】:

    你可以的

    for (String key : hashmap.keySet()) {
        String value = hashmap.get(key);
    }
    

    【讨论】:

      【解决方案4】:

      您可以使用 Iterator http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html 来做到这一点。

          HashMap<String, String> yourHashMap = new HashMap<>();
          Iterator<Map.Entry<String, String>> it = yourHashMap.entrySet().iterator();
          while(it.hasNext()){
              it.next();
              System.out.println(yourHashMap.get(it));
          }
      

      乍一看,使用 for 循环而不是迭代器可能很诱人,但

      如果您想在迭代时修改 HashMap 中的元素,则需要使用迭代器!

      使用 for 循环时,您无法从地图中删除元素,而

       it.remove()
      

      在上面的例子中效果很好。

      【讨论】:

        【解决方案5】:
        public class IterableHashMap<T,U> extends HashMap implements Iterable
            {
        
                @Override
                public Iterator iterator() {
                    // TODO Auto-generated method stub
        
                    return this.keySet().iterator();
                }
        
        
        
            }
        
        
        
            public static void main(String[] args) {
        
                testA a=new testA();
                IterableHashMap test=a.new IterableHashMap<Object,Object>();
                for(Object o:test)
                {
        
                }
            }
        

        【讨论】:

          【解决方案6】:

          使用这个

          map.forEach((k, v) -> System.out.printf("%s %s%n", k, v));
          

          【讨论】:

            猜你喜欢
            • 2011-05-02
            • 1970-01-01
            • 2011-01-20
            • 1970-01-01
            • 1970-01-01
            • 2013-06-14
            • 2011-03-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多