分配的作业问题需要存储用户选择的视频游戏的功能。这是一个小型的学校项目,我想知道存储信息的最佳方式是什么。该计划必须访问视频游戏预订,但我认为数据库对于这么小的任务来说有点过分了。
你会做什么?
答案 0 :(得分:7)
通常,对于小型学校项目,我发明了自己的平面文件格式。
通常它是一个简单的类似CSV的文件,有一些键值对。
根据您需要保存的信息类型,XML可能是最佳选择。
此外,如果信息只需要保存很短的时间(一次运行应用程序),并且保存的数据量相对较小,只需将所有数据保存在内存中,肯定会使程序生成更快,通常更容易写。
答案 1 :(得分:6)
凯是对的,虽然管理视频游戏“预订”信息的好方法仍然是一个小型数据库(尝试sqlite)。我确定你想要将预订信息与用户联系起来,因此任何形式的关系都可以证明使用数据库是合理的。
答案 2 :(得分:2)
我认为最简单的解决方案是序列化保存数据的对象,然后写入磁盘(选择任何文件扩展名让您满意)。只需阅读文件即可恢复您的对象!
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fis);
Foo f = (Foo)in.readObject();
以下是整个过程的精彩入门:Discover the secrets of the Java Serialization API
答案 3 :(得分:1)
如果你更具体一点,那可能会有所帮助,但是......
我认为分配试图让你做的是理解程序在运行之前不会知道数据类型和数据的大小(行和列)。
从你告诉我的内容,我会尝试通过一个可变列表来建模表。对它进行一般编程,以便您可以更换实现:
列表> table = new ArrayList>();
这只是视频游戏吗?如果是这样,我会创建一个VideoGame对象,存储名称,制造商,系统等字段,并将其放入可变数据结构和wallah中!这一切都取决于您将在列表中执行的操作......您在搜索和排序吗?你关心检索时间吗?
如果您希望检索为O(1),或者在不准确的非专业术语中,“大约一条指令”,请考虑使用Map。如果密钥是视频游戏的名称,它将以O(1)返回。如果有多个条目,请考虑使用List作为值。
我希望这不会太长且令人困惑,但请说明字段数是否已知或是否必须完全通用。如果必须完全通用,只需使用数据库!它是通用的...或者如果你真的不想这样做,请使用我描述的第一种方法。
希望它有所帮助。
答案 4 :(得分:1)
创建您自己的文本文件(CSV等)
Pro :易于编辑
Con :你必须做自己编组的所有事情。并编制文件格式。您最终可能会得到一个写得不好的数据库。严重改变物体可能是一种真正的痛苦。
序列化对象(二进制或XML格式)
Pro :其他东西处理编组(如果使用“bean”,则使用二进制和XML构建)
Con :在Java版本之间进行更改可能会破坏二进制格式化的序列化。 XML需要bean。
自定义XML文件
Pro :Java在Java中得到很好的支持
Con :您可能最终会被现有的编组API吓到并自己滚动(希望使用Java XML API)。然后你最终在与文本文件相同的空间(一个写得不好的数据库)。
嵌入式数据库
Pro :SQL很性感
Con :除非您已经了解SQL和/或正在使用ORM产品,否则ORM可能会有点痛苦。
我可能会去嵌入式数据库+ JPA。
答案 5 :(得分:0)
这取决于您所谈论的数据类型,数据量,访问和呈现数据的方式以及是否需要对数据进行进一步查询和分析。
我会说CSV或SQLite。