我正在读取一个文件以用保存的数据data.ser
填充一些s。HashMap
尽管Map
具有我应该具有的值,但KeySet
、EntrySet
和 值都是空的。例如,Hashmap
当我在调试模式下检查“Employees”时,它看起来像这样:
有人可以帮我弄清楚它有什么问题吗?这种情况怎么可能发生?
尽管映射包含一个值 (Employee) 和键 (ID) 即时搜索,但返回空值的示例:
我正在读取一个文件以用保存的数据data.ser
填充一些s。HashMap
尽管Map
具有我应该具有的值,但KeySet
、EntrySet
和 值都是空的。例如,Hashmap
当我在调试模式下检查“Employees”时,它看起来像这样:
有人可以帮我弄清楚它有什么问题吗?这种情况怎么可能发生?
尽管映射包含一个值 (Employee) 和键 (ID) 即时搜索,但返回空值的示例:
这是一个UnmodifiableMap。
您提到的数据成员被初始化为 null :
private transient Set<K> keySet = null;
private transient Set<Map.Entry<K,V>> entrySet = null;
private transient Collection<V> values = null;
同名方法访问底层 Map 以返回非空值,并在第一次调用它们时将它们缓存在这些变量中。
public Set<K> keySet() {
if (keySet==null)
keySet = unmodifiableSet(m.keySet());
return keySet;
}
public Set<Map.Entry<K,V>> entrySet() {
if (entrySet==null)
entrySet = new UnmodifiableEntrySet<K,V>(m.entrySet());
return entrySet;
}
public Collection<V> values() {
if (values==null)
values = unmodifiableCollection(m.values());
return values;
}
因此,如果您调用这三个方法,您将看到这些数据成员不再为空。