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
}
答案 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();
// ...
}