我想知道如果我不知道有多少个对象,我应该如何从列表中读取对象?保存更容易,因为我使用ArrayList中存储所有对象的对象数量。像这样的代码:
// Save all customer object from customerList
for(int j=0; j < customerList.size(); j++) {
outObjectStream.writeObject(customerList.get(j));
}
我的想法是使用类似的东西加载文件中的所有对象,并在清除后将它们一个接一个地添加到ArrayList。但正如我所写,当我不知道文件中的对象数量时,这是不可能的。我有什么想法可以用简单的方法解决这个问题吗?
答案 0 :(得分:6)
您的设计存在缺陷:您应该将 List 序列化为文件,而不是每个Customer对象。然后你只需反序列化整个List。
反序列化后,您将拥有该列表的新实例。如果您绝对必须将客户加载到您的列表中,请使用customerList.addAll(list);
所有常见的Collections
都是Serializable
:使用并信任JDK API!
答案 1 :(得分:3)
你应该使用outObjectStream.writeObject(customerList);
并让ObjectInputStream在读回来时完成工作。
答案 2 :(得分:2)
使用ArrayList.add()
。事先不需要知道元素的数量。
答案 3 :(得分:1)
要从文件中读取对象到列表中,您需要以与编写它相反的方式将其读回:
readObject(...)
而不是:
writeObject(...)
但是,您实际上通常不希望单独保存每个对象。应该将整个列表保存为一个对象,或者理想地将其保存为更易读的格式,如CSV,XML或JSON等。
当您开始更改对象(添加新字段等)时,写入和读取对象会变得棘手。