我正在尝试使用 keySet()
方法遍历 HashMap
,如下所示:
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);
}
最佳答案
keySet
、entrySet
和 values
是什么意思?如果你指的是HashMap
的内部字段,那么你不应该看它们,也不需要关心它们。它们用于缓存。
例如,在我使用的 Java 6 VM 中,keySet()
是这样实现的:
public Set<K> keySet() {
Set<K> ks = keySet;
return (ks != null ? ks : (keySet = new KeySet()));
}
所以 keySet
是 null
的事实是无关紧要的。 keySet()
(方法)永远不会返回 null
。
entrySet()
和values()
也是如此。
关于java - HashMap 中的 keySet 字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2272471/