创建可序列化的ArrayMap

时间:2015-10-21 02:58:45

标签: android serialization data-structures interface array-map

我是Android的新手,但我并不是Java的新手。据我所知,由于使用的内存较少/性能提高,因此应该在HashMap上使用ArrayMap。我不完全确定何时我应该使用一个而不是另一个,但是当尝试通过Bundle / Intent发送ArrayMap时,我注意到我无法这样做,但我可以使用HashMap。

所以,我想,不仅仅是屈服于使用HashMap,特别是当它没有必要时,我将创建自己的Serializable ArrayMap,但是我不确定如何去做。

我所知道的是我实现了三个方法,readObject,writeObject和readObjectNoData,它们都有一个Stream作为参数。我假设我必须遍历ArrayMap中的每个项目,然后将其写入输出流并从输入流中读取以重新创建ArrayMap。我想知道的是......我该怎么做。

如果有重复的问题,我很抱歉,但我根本找不到任何问题。因此,我将从一个例子开始,以抵挡任何“YAGNI”(你不会需要它)。对于我的一个项目,我维护了一个嵌套的ArrayMap对象,所述对象有数千个,嵌套的键值可以大大减少碰撞。我不能走得太远,就像最近的学校项目一样。我希望能够在应用程序的生命周期中保留数据结构,包括onAtroy of MainActivity,而不必再次解析所有内容。

我的解决方案最终是创建一个常量(静态最终)ArrayMap并访问它,这有效,但感觉我违背了Android开发的理念。此外,我假设当MainActivity被销毁时,常量也会被破坏,但是使用保存的包,它将被保留,这就是我想要的。

我正在离开主题...无论如何,我想创建一个Serializable ArrayMap,但我有很多关于它的问题。首先,表示嵌套在ArrayMap中的对象的最佳格式是什么? JSON是我的猜测,虽然我之前从未真正做过任何事情。那么,如何从嵌套在里面的对象中获取信息?我是否强制执行只有实现我声明的接口的某些对象可以添加到地图中?然后HashMap没有这个要求。我是否使用反射来获取每个字段和值,但那不是那么超慢吗?

我不能使用任何第三方库,但是我很乐意从头开始这样做,不管它是否是一种学习更多知识的好方法,是否有人对如何正确处理此问题有任何提示/想法?提前谢谢!

0 个答案:

没有答案