为什么在运行hashtable和hashmaps的等效代码时会得到不同的结果?
Iterator<Integer> it = ht.keySet().iterator();
while(it.hasNext()) {
i = it.next();
System.out.println(i + " : " + ht.get(i));
}
ht是一个哈希表对象。如果我用hm替换一个hashmap对象,它不会从get()方法打印值而是打印null。那是为什么?
答案 0 :(得分:3)
虽然技术上不是你问题的“答案”(由于问题中提供的代码不足,这是不可能的),但我确实有关于代码风格的建议。
这可以帮助您避免在代码中发现的错误(根据您之后的评论)。
您提供的代码:
Iterator<Integer> it = ht.keySet().iterator();
while(it.hasNext()) {
i = it.next();
System.out.println(i + " : " + ht.get(i));
}
for (Map.Entry<Integer, Object> entry : ht.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
如果可以,请优先使用此表单直接使用迭代器
它更整洁,less code == good
答案 1 :(得分:1)
我认为使用HashMap你必须得到entrySet。然后,您可以遍历每个条目......
这是一个关于迭代HashMap的参考:
http://www.java2s.com/Code/JavaAPI/java.util/HashMapentrySet.htm
我同意你最初的思路 - 不知道为什么它会这样运作......