java - HashMap 中的 keySet 字段为空

标签 java collections map hashmap

我正在尝试使用 keySet() 方法遍历 HashMap,如下所示:

for (String key : bundle.keySet()) {
    String value = bundle.get(key);
    ...
}

我在我的代码的其他部分对 HashMaps 使用了很多 for-each 循环,但这个是一个奇怪的行为:它的大小是 7(这是正常的)但是 keySet, entrySetvaluesnull(根据 Eclipse 调试器)!

“bundle”变量被实例化并填充如下(没有原创......):

Map <String, String> privVar;
Constructor(){
    privVar = new HashMap<String, String>();
}
public void add(String key, String value) {
    this.privVar.put(key, value);
}

最佳答案

keySetentrySetvalues 是什么意思?如果你指的是HashMap的内部字段,那么你不应该看它们,也不需要关心它们。它们用于缓存。

例如,在我使用的 Java 6 VM 中,keySet() 是这样实现的:

public Set<K> keySet() {
    Set<K> ks = keySet;
    return (ks != null ? ks : (keySet = new KeySet()));
}

所以 keySetnull 的事实是无关紧要的。 keySet()(方法)永远不会返回 null

entrySet()values() 也是如此。

关于java - HashMap 中的 keySet 字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2272471/

相关文章:

java - 如何在浏览器中过滤Java Applet Console的输出?

Java 设置异常

java - ArrayList 删除索引为 0 和 1 的元素

java - 如何从一张 map 中删除另一张 map 的元素?

java - Android:无法解析类型java.lang.Enum

java - 从 Java 运行 SQL Loader - 并非所有行都被加载

java - 一个对象与多个对象 - Java 或任何其他 OOP

php - 未定义的属性:Illuminate\Database\Eloquent\Collection::$id Laravel 4

c++ - STL映射查找线程安全

java - java程序中与Map相关的错误