如何存储大的字符串列表以优化初始化时间和搜索速度

Mal*_*rba 1 java android

我正在编写一个存储一组约50.000个字符串的android应用程序,我需要输入如何最好地存储它们.

我的目标是能够以低延迟查询匹配模式(如Hello W**m Aliv*)的字符串列表,但避免了大量的初始化时间.

我想到了以下两种方式:

  1. 一个java集合.我认为java集合应该可以快速搜索,但鉴于它相当大,我担心它可能会对应用程序初始化时间产生很大影响.
  2. SQLite数据库中的表.我想这在初始化时会很容易(因为它不需要加载到内存中),但是我担心查询会产生一些相关的延迟,因为它需要启动一个SQLite进程(或者不是吗? ).

我的"想象"是正确的还是可怕的错误?哪种方式最好?

Alb*_*rto 5

如果你想快速(如在即时)搜索时间,你需要的是你的字符串的全文索引.幸运的是,SQLite对FTS扩展提供了一些全文搜索支持.SQLite是Android API的一部分,初始化时间完全可以忽略不计.您需要注意的是索引(.sqlite文件)必须随您的应用程序一起提供在.apk中,或者在第一次打开时重新创建(这可能需要相当长的时间)