Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HashMap';s键集、入口集和值为null,而表不为空_Java_Eclipse_Collections_Hashmap_Keyset - Fatal编程技术网

Java HashMap';s键集、入口集和值为null,而表不为空

Java HashMap';s键集、入口集和值为null,而表不为空,java,eclipse,collections,hashmap,keyset,Java,Eclipse,Collections,Hashmap,Keyset,我正在读取一个data.ser文件,用保存的数据填充一些HashMaps 虽然映射具有我应该具有的值,但是键集、入口集和值都是空的。 例如,Hashmap“Employees”在调试模式下检查时如下所示: 有人能帮我找出它的毛病吗?这种情况怎么可能呢 虽然映射包含一个值(Employee)且键(ID)为im searching,但返回空值的示例: 这是一个好消息 您提到的数据成员已初始化为空: private transient Set<K> keySet = null; priv

我正在读取一个
data.ser
文件,用保存的数据填充一些
HashMap
s

虽然
映射
具有我应该具有的值,但是
键集
入口集
和值都是空的。 例如,
Hashmap
“Employees”在调试模式下检查时如下所示:

有人能帮我找出它的毛病吗?这种情况怎么可能呢

虽然映射包含一个值(Employee)且键(ID)为im searching,但返回空值的示例:

这是一个好消息

您提到的数据成员已初始化为空:

private transient Set<K> keySet = null;
private transient Set<Map.Entry<K,V>> entrySet = null;
private transient Collection<V> values = null;
private transient Set keySet=null;
私有瞬态集entrySet=null;
私有临时集合值=null;
同名的方法访问基础映射以返回非空值,并在第一次调用这些值时将其缓存在这些变量中

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;
}
公共设置键集(){
如果(键集==null)
keySet=不可修改集(m.keySet());
返回键集;
}
公共集入口集(){
if(entrySet==null)
entrySet=新的不可修改的entrySet(m.entrySet());
返回入口集;
}
公共集合值(){
如果(值==null)
values=不可修改的集合(m.values());
返回值;
}

因此,如果调用这三个方法,您将看到这些数据成员不再为null。

为什么您对这些内部字段感兴趣?如果使用它的公共方法,HashMap的行为是正确的,对吗?如果我尝试按给定的键搜索映射,它总是返回null,因为keySet为null。我认为,@Roi811如果基础映射(存储在
m
成员中)包含该键,它不会返回null。我对此表示怀疑。
Map
返回null,因为要么键不存在,要么键的值确实是
null
@Roi811如果您发布您遇到的实际问题,您将获得更有效的帮助(如果我尝试按给定键搜索Map,它总是返回null,并且elaborate/给出示例),而不是只展示你所研究的一小部分。谢谢你的回答。我很难找到合适的地方放置这些方法。原因是,我有一个准备好的java程序,我有能力为它编写一个合适的GUI。此外,还有多个HashMap作为这个程序的DB,在“view”类中声明。正如您所提到的,getter确实会发送这些映射的不可修改映射。