在Java中使用像这样的迭代器是合法的吗?
for(int key : someMap.KeySet() && double value : someMap.values()) {
//do something
}
这不是我能在其他任何地方找到的东西。我将自己测试一下,但是如果有人能省下我的努力并且知道这一点,我将非常感激。
答案 0 :(得分:0)
不,foreach循环不会在Java中以这种方式工作。为什么必须循环使用for(Integer key : someMap.keySet()) {
Double value = someMap.get(key);
//do something
}
值?您可以直接获取给定键的值:
Map
甚至更好,迭代Set
条目for(Map.Entry<Integer, Double> entry : someMap.entrySet()) {
Integer key = entry.getKey();
Double value = entry.getValue();
//do something
}
:
Iterator<Integer> keyIterator = someMap.keySet().iterator();
Iterator<Double> valueIterator = someMap.values().iterator();
while(keyIterator.hasNext() && valueIterator.hasNext()) {
Integer key = keyIterator.getNext();
Double value = valueIterator.getNext();
\\ do stuff
}
或者,如果你真的想要迭代两者,你可以手动使用迭代器:
xcodebuild -scheme "Tests" \
-configuration Debug \
-destination "platform=iOS Simulator,name=iPhone 6"
答案 1 :(得分:0)
您需要遍历someMap.entrySet()
以实现您在问题中草拟的内容。这样,您就可以在一次迭代中访问每个条目的键和值(包含在Map.Entry<Integer, Double>
对象中)。
答案 2 :(得分:0)
您几乎肯定希望迭代entrySet()
的{{1}},如此
Map
但是对于它的价值,在Java 8中你可以做到
for(Map.Entry<Integer, Double> entry : map.entrySet()) {
int key = entry.getKey();
double value = entry.getValue();
// do whatever with key, value
}