我需要为我的 android 应用程序解析一个包含大约 30k 键值对数据的文档。存储这些键值的最佳(最快或最简单)方法是什么?它是哈希表吗?,android sharedpreferences?还是安卓sqlite?
感谢您的阅读,并将不胜感激任何建议。^^
如果您不希望所有这些同时在内存中,我会使用 sqllite(不确定最快,但至少减少运行时内存消耗,这是非常重要的因素,因为 android 限制每个进程/应用程序的可用内存) .
您可以使用SharedPreferences
. 您也可以通过 将 Map 写入文件serialization
,因此一旦将输入文件加载到 HashMap 中,您就可以执行以下操作:
FileOutputStream fStream = openFileOutput("saved-map", Context.MODE_PRIVATE) ;
ObjectOutputStream oStream = new ObjectOutputStream(fStream);
oStream.writeObject(map);
oStream.flush();
oStream.close();
SQLLite
也总是一个不错的选择,但以上两个都快速且易于实施。
这些存储类型之间存在一些极端差异。这完全取决于您使用哪一个用例。
SharedPreferences
在这里很可能是一个坏电话。管理所有这些键并且无法在您的首选项文件中迭代它们在很大程度上是不可取的。
哈希表仅将数据存储在内存中,并且会在 Android 终止应用程序或释放其内存时丢失。此外,这是一个巨大的内存负担,具体取决于您存储的数据类型。(int, int
地图可能没那么糟糕。)
最有可能做到这一点的最好方法是在后台线程中通过 SQLite。正如我所说,这取决于您的用例,但您将无法管理 30k 个密钥而不会造成速度损失或过度使用内存。这只是对当今技术的限制。