Java 存储/读取大量字符串的好方法?

Java 存储/读取大量字符串的好方法?,java,android,database,textview,Java,Android,Database,Textview,我正在为android开发一个“有趣的引用”应用程序。我想在我的应用程序中使用1000多个引号,但我不知道是应该使用数据库还是文本文件。请注意,应用程序不应将同一个句子读两遍。它有一个“上一步/下一步”按钮,所以我需要跟踪以前的报价。请告诉我哪一个更好,更优化。另外,如果你能将我链接到一个关于存储/读取数据的好教程 谢谢如果您永远不会读取同一个字符串两次,我建议您不要使用string类,因为这些对象是不可变的,并且会粘在字符串池中等待重新分配给引用,但这永远不会发生,因为您永远不会读取同一个字符

我正在为android开发一个“有趣的引用”应用程序。我想在我的应用程序中使用1000多个引号,但我不知道是应该使用数据库还是文本文件。请注意,应用程序不应将同一个句子读两遍。它有一个“上一步/下一步”按钮,所以我需要跟踪以前的报价。请告诉我哪一个更好,更优化。另外,如果你能将我链接到一个关于存储/读取数据的好教程


谢谢

如果您永远不会读取同一个字符串两次,我建议您不要使用string类,因为这些对象是不可变的,并且会粘在字符串池中等待重新分配给引用,但这永远不会发生,因为您永远不会读取同一个字符串两次

DB的使用将使事情变得过于复杂

我建议您读取一个以字节为单位的平面文件,然后将它们转换为StringBuider对象,从而使其足够简单,但仍然可以防止密集的GC()


我希望它能帮助..

使用数据库。它比文本文件更快、更灵活。有一天你会扩展应用程序,然后你会很高兴你使用了一个数据库。我建议在启动应用程序时,使用数据库内置的随机功能选择所有行。1000行不应该花费太长的时间。然后,只需遍历最终得到的字符串的结果ArrayList(或您选择使用的任何内容)——显示的第一个引号是该列表中的元素0,第二个元素是该列表中的元素1,依此类推。如果使用这种方法,则不需要任何其他结构来跟踪已使用的引号-只需使用用于索引引号数组的迭代器变量即可

fetchAllRows
on似乎是您获取数据所需要的


如果您选择不在内存中保留太多,那么可以只保留一个迄今为止使用过的报价ID列表。该列表的最后一个元素是当前引号,前面的元素是用户按下后退按钮时应该看到的内容。

使用DB应该可以,因为我认为您不希望所有数据都存储在内存中。您可以将所有引号保留在DB中,并保留一个标记以跟踪是否读取了引号(只需在读取后将其更新为true)

通过这种方式,您可以从任何带有false标志的报价中进行选择。

您考虑过吗?当您有大量记录时,您可以通过简单的csv文件轻松升级到真实数据库


1K的记录很小,我认为不足以获得数据库。

我同意基督教,你可能想考虑把数据库挂到一个Web服务上,这样你就可以在不需要用户下载新版本的应用程序的情况下更新字符串。谷歌的应用程序引擎是一个伟大的服务,是免费的,除非你超过了一定数量的调用的东西。你只想写一次。您是否可以预先填充它并将其与应用程序一起发布(或者通过网络将其设置为只读)?如果没有,那么考虑检查它是否被填充,然后填充它。保持内存中的数据可能不是最佳的(因为我认为这将是一个移动应用程序)。此外,我们将无法轻松维护已被删除的报价的状态。所有这些缺点都指向使用您也认可的DB。这完全取决于您想要什么,您能做什么,以及您的瓶颈是什么