Java 中的永久集合
Posted
技术标签:
【中文标题】Java 中的永久集合【英文标题】:Permanent collections in Java 【发布时间】:2012-04-25 07:26:01 【问题描述】:根据我要求开发小型学生宿舍管理系统的任务:
应用程序应该使用面向对象的概念开发,使用 Student 类和 Apartment 类,为类实现适当的数据字段和方法。数据可以存储在集合中,即对象、向量等的数组中,也可以存储在数据库之外的数据文件中。
到目前为止,我一直在使用 Sets。我不确定这是否正确,但我将 HashSets 添加到我的课程中。示例:
public static Set<Apartment> listOfApartments = new HashSet<Apartment>();
// in Apartment Class)
现在我刚刚意识到我实际上需要持久性集合或一些解决方案来实际永久存储数据。
有什么建议吗?
【问题讨论】:
你在寻找什么样的坚持?数据库还是文件? @Rudy:OP 希望通过使用文件系统来存储它。 注意到了。我在 Oleksi 编辑之前看到了这个问题。现在更清楚了。 【参考方案1】:如果我在您所在的位置,我会使用诸如 ArrayList 之类的东西来存储数据,尤其是学生。集合不允许重复数据,因此这可能会导致问题。
关于持久化数据,您应该查看ObjectOutputStream 来存储您的对象,并查看ObjectInputStream 以将它们加载回您的应用程序。您可以查看 here 获取 ObjectStreams 教程。
我推荐的是使用诸如XStream 之类的东西(你可以看到如何使用它here)。这将允许您的应用程序以人类可读的方式存储数据(这有助于调试),并且还允许您的数据被不同的编程语言读取。
【讨论】:
+1 XStream 然后使用 BufferedWriter 将其保存为文件...并使用 BufferedReader 读取。【参考方案2】:如果Appartment
是Serializable
,那么Set<Apartment>
也是Serializable
并且不需要任何额外的工作来使用java.io 类来持久化它
要使类可序列化,您必须:
-
使其实现接口java.io.Serializable
添加默认构造函数
就这么简单
【讨论】:
以上是关于Java 中的永久集合的主要内容,如果未能解决你的问题,请参考以下文章