HashMaps 应该以这两种方式迭代还是枚举被认为是错误的?我用两个迭代器函数做了一个简单的迭代器程序:
import java.util.*;
public class HashMapIterators
{
public static void main(String[] args)
{
HashMap<String, Integer> hMap = new HashMap<String, Integer>();
hMap.put("abc", 10);
hMap.put("pqr", 20);
hMap.put("asd", 30);
hMap.put("xyz", 40);
iteratorEnumeration(hMap);
iteratorEntrySet(hMap);
}
public static void iteratorEnumeration(HashMap hMap)
{
System.out.println("iteratorEnumeration");
Iterator it = hMap.keySet().iterator();
Enumeration em = hMap.elements(); // doesn't work
Enumeration em = new IteratorEnumeration(it); // doesn't work
// while(em.hasMoreElements())
{
}
}
public static void iteratorEntrySet(HashMap hMap)
{
System.out.println("iteratorEntrySet");
Iterator it = hMap.entrySet().iterator();
while(it.hasNext())
{
Map.Entry me = (Map.Entry)it.next();
System.out.println("Key: [" + me.getKey() + "], Value: [" + me.getValue() + "]");
}
}
}
iteratorEnumeration 函数不起作用,我猜这些方法(如 elements())仅适用于 HashTable。如果我错了,请纠正我,我不知道什么时候适合使用什么功能。所以,我的主要问题是——我们是否应该通过在 entrySet 方法上设置一个迭代器来迭代一个 HashMap(请参阅我的 iteratorEntrySet 函数),这是唯一正确的方法吗?