我在 Java 哈希表序列化中遇到了一个问题,这对我来说似乎不合逻辑,但我无法找出我正在使用的逻辑中的错误。这就是我正在做的事情,
Hashtable sspsrpData = new Hashtable();
for(int i=0;i<Constants.secondayStructures.length;i++) {
SecondaryStructures ss = (SecondaryStructures)(data.get(Constants.secondayStructures[i]));
sspsrpData.put(Constants.secondayStructures[i], new SecStrucPSRP(ss.getSecStruct(),ss.getLengthCounts()));
}
FileOutputStream fos = null;
ObjectOutputStream out = null;
fos = new FileOutputStream(Constants.sspsrpData);
out = new ObjectOutputStream(fos);
out.writeObject(sspsrpData);
这段代码应该将3个键值对放入哈希表中,并且还应该序列化由此形成的哈希表。现在,当我尝试通过这段代码将它们检索回另一个程序时:
FileInputStream fis = null;
ObjectInputStream in = null;
fis = new FileInputStream(Constants.sspsrpData);
in = new ObjectInputStream(fis);
ssPsrp = (Hashtable)in.readObject();
生成的哈希表只有 2 个键值对。尽管哈希表中的计数为 3,但我只能在哈希表中看到 2 个键值对。我不明白出了什么问题!!
有人可以指出我哪里出错了吗?
谢谢,美好的一天, 桑托什
最佳答案
也许Constants.SecondayStructures[0] .equals( Constants.SecondayStructures[1] )
或 Constants.SecondayStructures[1] .equals( Constants.SecondayStructures[2] )
在序列化对象之前尝试 sspsrpData.size()
,以确保它在序列化之前具有合适的大小。
关于Java 哈希表和序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672079/