存储数据 - 每种存储类型的好处和缺点



我有这种数据。这可以或不是数组。仅供参考。

arrayName = array1,array2,array3

array1 = abc,cde,fgh

array2 = abc,cde

array3 = abc,cde,fgh,ijk,lmn

那么,存储此类数据的最佳方法是什么。

如果我想

  1. 添加或删除Array1和所有内容
  2. 在Array2中添加或删除项目(例如,添加FGH或删除CDE)

我发现的方法:

  1. sharedPreference android共享首选项示例
  2. 数组
  3. sqlite android sqlite示例
  4. 文本文件

请分享您为什么选择方法的pro和缺点。还请分享是否有更好的方法来存储此类数据。

如果您找到了更好的链接或示例以引用。

这是每个解决方案的优点和缺点:

1) sharedPreference

您在此处保存简单的键值对。因此,很难将数组和复杂的结构保存在共享播放中。因此,该解决方案将不适用于数组和数组。实现自己想要的东西将是极其(但并非不可能)的。

2)数组

绝对不是!它是内存存储,因此,当您关闭应用程序或过程死亡时,您将丢失所有数据

3) sqllite

我会添加到Android的其他数据库中,例如领域。好的解决方案。它是用于收集数据的结构化存储。当数据构造为行时,将其存储/检索数据非常容易。此外,您可以轻松删除行。当您需要特定行或特定数组(在这种情况下表)

时,您不必读取整个结构(其他数组)

4) textfile

我不建议存储在文本文件中,但是可以这样做,您可以将这些数组序列化到文本文件并进行序列化。但是,每当您必须这样做时,即使您只想要例如array2。当您的数据变大时可能会很慢。

以如此模糊的要求提供建议非常困难,您显然将数据构成一系列字符串,您想将其持续存储在Android上 - 这基本上就是我们所有的知道。

除了提到的解决方案外,我还会考虑使用GSON将其存储为JSON到磁盘。虽然阅读/写入可能没有最佳的性能,但很容易用诸如数组阵列之类的文档对文档进行建模,而且我们无法知道您的性能要求与易用性。

class MyData {
  public List<List<String>> data;
}

如果您有一个myData对象,则可以简单地将其序列化为字符串,该字符串可以写入磁盘上的文件:

String json = new Gson().toJson(myData);

这会产生

之类的东西
{
  "data": [
    ["abc", "cde", "fgh"],
    ["abc", "cde"],
    ["abc", "cde", "fgh", "ijk", "lmn"]
  ]
}

可以很容易地使用e.g的磁盘写入磁盘。标准文件和缓冲作者。然后,您可以回信并使用:

进行验证。
MyData myData = new Gson().fromJson(json, MyData.class);

最新更新