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

时间:2012-01-01 14:49:55

标签: java android database textview

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

感谢

4 个答案:

答案 0 :(得分:6)

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

this page上的{p> fetchAllRows似乎是您获取数据的目的。

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

答案 1 :(得分:3)

如果你永远不会读取相同的字符串两次,我会建议你不要使用String类,因为对象是不可变的,并且会粘在字符串池中等待重新分配给引用,但这绝不会发生,因为你会从来没有读过两次相同的字符串。

使用DB会使事情复杂化。

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

我希望它有所帮助..

答案 2 :(得分:1)

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

通过这种方式,您可以选择任何标记为false的引用。

答案 3 :(得分:1)

您考虑过CsvJdbc了吗?当您拥有大量记录时,您可以获得简单的csv文件,并且可以轻松升级到真实数据库。

1k记录非常小,在我看来不足以值得建立一个数据库。

相关问题