Android 存储数据-每种存储类型的优缺点

Android 存储数据-每种存储类型的优缺点,android,Android,我有这样的数据。这可以是数组,也可以不是数组。仅供参考 ArrayName=Array1,Array2,Array3 阵列1=abc、cde、fgh Array2=abc,cde 阵列3=abc、cde、fgh、ijk、lmn 那么,存储此类数据的最佳方法是什么呢 如果我想 添加或删除阵列1和其中的所有内容 在Array2中添加或删除项目(例如添加fgh或删除cde) 我发现的方法: 共享引用 阵列 SQLite 文本文件 请分享你为什么选择这种方法的利弊。 如果有更好的方法来存储此类数据,也请

我有这样的数据。这可以是数组,也可以不是数组。仅供参考

ArrayName=Array1,Array2,Array3

阵列1=abc、cde、fgh

Array2=abc,cde

阵列3=abc、cde、fgh、ijk、lmn

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

如果我想

  • 添加或删除阵列1和其中的所有内容
  • 在Array2中添加或删除项目(例如添加fgh或删除cde)
  • 我发现的方法:

  • 共享引用
  • 阵列
  • SQLite
  • 文本文件
  • 请分享你为什么选择这种方法的利弊。 如果有更好的方法来存储此类数据,也请分享


    如果您找到更好的链接或示例供其他人参考,请编辑此内容。

    以下是每种解决方案的优缺点:

    1) SharedReference

    这里保存简单的键值对。因此,在SharedReference中保存数组和复杂结构非常困难。因此,该解决方案不适用于阵列和阵列阵列。要达到你想要的目标是极其困难的(但并非不可能)

    2) 阵列

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

    3) SqlLite

    我会为android添加其他数据库,比如Realm。 很好的解决方案。它是用于收集数据的结构化存储。将数据结构化为行时,存储/检索数据将非常容易。此外,您可以轻松地删除行。当您需要特定的行或特定的数组(本例中的表)时,不必读取整个结构(其他数组)

    4) TextFile


    我不建议存储在文本文件中,但也可以这样做,您可以将这些数组序列化为文本文件,然后反序列化。但每次你都必须这样做,并且阅读整个结构并解析它,即使你只需要Array2。当您的数据变得更大时,它可能会变得很慢。

    在这样模糊的要求下,提供建议是非常困难的,很明显,您的数据是以字符串数组的形式构建的,并且您希望将其持久存储在Android上—这基本上就是我们所知道的

    除了所提到的解决方案之外,我还将考虑将此存储为JSON到磁盘。虽然读/写可能没有最佳性能,但使用数组的数组之类的东西对文档建模非常容易,而且我们无法了解您的性能要求和易用性

    class MyData {
      public List<List<String>> data;
    }
    
    这将产生类似于

    {
      "data": [
        ["abc", "cde", "fgh"],
        ["abc", "cde"],
        ["abc", "cde", "fgh", "ijk", "lmn"]
      ]
    }
    
    可以使用标准文件和文件等轻松地将其写入磁盘。然后,您可以使用以下命令将其读回并反序列化:

    MyData myData = new Gson().fromJson(json, MyData.class);
    

    ArrayName=Array1,Array2,Array3这个数组是数组的数组吗?你想永久保存它们吗?我有个问题,因为你的选择2。是Arrays@MishaAkopov是的,它们是数组的数组。是的,为了永久保存它。你也可以将2和4合并。可能的副本非常感谢你的回答,它非常详细和有用。事实上,这就是我现在使用的,但计划学习SQLite。
    MyData myData = new Gson().fromJson(json, MyData.class);