将对象从文件加载到arrayList

时间:2012-01-28 12:07:35

标签: java

我想知道如果我不知道有多少个对象,我应该如何从列表中读取对象?保存更容易,因为我使用ArrayList中存储所有对象的对象数量。像这样的代码:

// Save all customer object from customerList
for(int j=0; j < customerList.size(); j++) {
    outObjectStream.writeObject(customerList.get(j));
}

我的想法是使用类似的东西加载文件中的所有对象,并在清除后将它们一个接一个地添加到ArrayList。但正如我所写,当我不知道文件中的对象数量时,这是不可能的。我有什么想法可以用简单的方法解决这个问题吗?

4 个答案:

答案 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等。

当您开始更改对象(添加新字段等)时,写入和读取对象会变得棘手。