我应该使用迭代器来对HashMap进行循环吗?

Rom*_*man 3 java iterator loops hashmap

我有一个HashMap<String,String>(被叫p2p),我想在它的元素上做一个循环.我找到了以下简单的方法:

for (String key : p2p.keySet()) {
   value = p2p.get(key);
}
Run Code Online (Sandbox Code Playgroud)

然而,后来我发现人们使用iterator().例如:

Iterator it = p2p.keySet().iterator();
while(it.hasNext()) {
    key = it.next();
    value = p2p.get(key);
}
Run Code Online (Sandbox Code Playgroud)

对我来说,第一种方式看起来更简单.所以,我的问题是为什么人们使用第二种方式?它是否具有一些客观优势,或者仅仅是品味和简单性的主观性问题?

Jon*_*eet 8

它们是相同的 - 增强的for循环使用迭代器来获取元素(除非你在数组上进行迭代,在这种情况下它使用引擎盖下的长度和数组访问.)

但就个人而言,我不会那么迭代 - 我会迭代键/值对:

for (Map.Entry<String, String> entry : p2p.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)

这样你就不需要做任何实际的查找了.