我正尝试使用HashMap
方法循环keySet()
,如下所示:
for (String key : bundle.keySet()) {
String value = bundle.get(key);
...
}
我在代码的其他部分对HashMaps使用了很多for-each循环,但是这个循环是一个奇怪的行为:它的大小是7(这是正常的)但是keySet
,entrySet
和values
是null
(根据Eclipse调试器)!
“bundle”变量被实例化并填充如下(没有原始...):
Map <String, String> privVar;
Constructor(){
privVar = new HashMap<String, String>();
}
public void add(String key, String value) {
this.privVar.put(key, value);
}
答案 0 :(得分:18)
keySet
,entrySet
和values
是什么意思?如果你的意思是HashMap
的内部字段,那么你不应该看它们而不必关心它们。它们用于缓存。
例如,在我使用keySet()
的Java 6 VM中实现如下:
public Set<K> keySet() {
Set<K> ks = keySet;
return (ks != null ? ks : (keySet = new KeySet()));
}
因此keySet
为null
这一事实无关紧要。 keySet()
(方法)永远不会返回null
。
entrySet()
和values()
也是如此。