【发布时间】:2016-04-03 20:17:08
【问题描述】:
最初的搜索并没有呈现出我预期的结果,而且 Google 也没有太大帮助。所以这里...
我正在开发一个将对象序列化为文件的应用程序。由于应用程序的性质,实际上没有必要一次序列化多个对象(因为通常一次创建一个对象)。
但是,反序列化是我的问题所在。
我想做的是能够基于 ID 反序列化一个特定对象。
换句话说,假设我有一个包含以下数据的序列化对象文件:
1,蒙哥马利伯恩斯,M,100 2,荷马辛普森,M,38 3、韦伦·史密瑟斯,男,44 岁 4、小丑克鲁斯蒂,男,60 岁 5,玛吉辛普森,F,38 ...等等...
假设我只想获取第二个对象(例如,ID 是 2)。
根据我所做的阅读和研究,没有办法以这种方式获取 特定 对象。如果我理解正确,我将不得不将我的整个序列化对象文件(我们称之为 data.ser)读入内存(例如,反序列化对象的数组或列表),然后对其进行迭代,直到找到我正在寻找的内容为了。对吗?
我这样做没有问题,只是看起来效率非常低。
虽然我预计我的应用程序的用户不会拥有数百或数千个对象,所以这一切都可能无关紧要,我只是想知道我是否正确理解了这一点。主要用于个人使用和Android自学。
我不反对使用嵌入式数据库。我现在想避免它,只是为了减小应用程序的大小。
那么我理解正确吗?除了我上面说明的之外,我实际上还没有看到检索特定对象的方法。我的理解是,在 Java 中唯一的方法是遍历对象。
【问题讨论】:
-
使用 GSON 会有所帮助
-
文件必须在内存中,至少最初是这样,任何程序才能知道文件的内容。我敢肯定有一些库是用来查询文件的,甚至不应该过多地参与其中。
标签: java android serialization deserialization