Java:这个for循环有什么作用?

时间:2011-06-16 06:25:05

标签: java android

for (String key : output.keySet())
{
       // some code
}

输出是hashmap的一个对象,我想遍历所有值的hashmap。我在互联网上找到了一个写这样的循环的例子......但是当我尝试执行它时,Eclipse不允许我这样做。请告诉我一个有效的方法或解释这个循环。这样我就可以遍历地图了。

我的功能伪像有点像这样

public void function (String key)
{
     Set<String> keys = output.keySet();

    // now I have to iterate through the keySet and match 'key' with the keys from keySet 
}

5 个答案:

答案 0 :(得分:6)

这是一段用Java 1.5+编译的代码。它使用泛型增强的循环

public static void main(String[] args) {
  Map<String, String> output = new HashMap<String, String>();
  output.put("1", "one");
  output.put("2", "two");
  output.put("3", "three");

  for (String key:output.keySet()) {
    System.out.println(output.get(key));
  }
}

请将其与您自己的代码进行比较。你用“android”标记了你的问题,所以我希望你的目标是Java6源代码。如果仍然无效,请详细评论。

答案 1 :(得分:1)

它是Java enhanced for loop.,它是在Java 5中添加的,因此您需要使用Java 5或Java 6的编译器设置来编译该循环。

编辑:我不明白你的意思:

// now i have to iterate through the keySet and match 'key' with the keys from keySet

地图具有唯一键(一组也只包含唯一值),键只能匹配一个键,您可以通过执行以下操作检查键是否存在:

map.contains(key);

您可以通过以下方式获取相关值:

Object value = map.get(key);

答案 2 :(得分:0)

它为output.keyset()中的每个对象执行一次迭代,在这种情况下,keySet字符串的集合,因此,对于每个 String 键在集合output.keySet()

答案 3 :(得分:0)

为什么不这样做

这是你的地图

Map<Something,SomeoneFun> myMap = new HashMap<Something,Someonefun);

如果您只想迭代键:

    for (Something myThing : MyMap.keySet() ) {
    // do whatever you want with my thing 
}

如果要迭代条目:

for (Entry<Something,Someone> myEntry : myMap.entrySet() ) {
          Something myKey=myEntry.getKey();
          Someone myValue = myEntry.getValue();
}

正如其他人所说,您必须运行JRE 1.5+并定位Java 1.5 +

答案 4 :(得分:0)

使用它来获取两个值

Map<String, Object> map = ...; 

这是循环,

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