HashMap 中的 keySet 字段为 null
我正在尝试使用 keySet()
方法循环 HashMap
,如下所示:
for (String key : bundle.keySet()) {
String value = bundle.get(key);
...
}
我在代码的其他部分的 HashMap 上使用了很多 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);
}
I am trying to loop over a HashMap
with the keySet()
method as below:
for (String key : bundle.keySet()) {
String value = bundle.get(key);
...
}
I use a lot of for-each loops on HashMaps in other parts of my code, but this one as a weird behavior: its size is 7 (what's normal) but keySet
, entrySet
and values
are null
(according to the Eclipse debugger)!
The "bundle" variable is instantiated and populated as follows (nothing original...):
Map <String, String> privVar;
Constructor(){
privVar = new HashMap<String, String>();
}
public void add(String key, String value) {
this.privVar.put(key, value);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
keySet
、entrySet
和values
是什么意思?如果您指的是HashMap
的内部字段,那么您不应该查看它们,也不需要关心它们。它们用于缓存。例如,在 Java 6 VM 中,我使用
keySet()
的实现如下:因此,
keySet
为null
的事实是无关紧要的。keySet()
(方法)永远不会返回null
。entrySet()
和values()
也是如此。What do you mean by
keySet
,entrySet
andvalues
? If you mean the internal fields ofHashMap
, then you should not look at them and need not care about them. They are used for caching.For example in the Java 6 VM that I use
keySet()
is implemented like this:So the fact that
keySet
isnull
is irrelevant.keySet()
(the method) will never returnnull
.The same is true for
entrySet()
andvalues()
.