Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何存储大量字符串以优化初始化时间和搜索速度_Java_Android - Fatal编程技术网

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

Java 如何存储大量字符串以优化初始化时间和搜索速度,java,android,Java,Android,我正在编写一个android应用程序,其中存储了一组约50000个 字符串,我需要输入如何最好地存储它们 我的目标是能够以低延迟查询 与模式匹配的字符串(如Hello W*或*m Aliv*),但避免 一个巨大的初始化时间 我想到了以下两种方法: 一个java集合。我认为java集合应该可以很快 搜索,但考虑到它相当大,我担心它可能有一个 对应用程序初始化时间有很大影响 SQLite数据库中的一个表。我想这样做很容易 初始化时间(因为它不需要加载到内存中), 但我担心查询会带来一些相关的延迟,因

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

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

我想到了以下两种方法:

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

  • 我的“想象”是正确的还是大错特错的?哪种方法最好?

    查看数据结构,如patricia trie()或三元搜索树()。它们将大大缩短搜索时间,并且根据字符串中的重叠量,实际上可能会减少内存需求。Java集合在许多方面都很好,但对于大型短字符串集来说并不是最佳选择。

    看看数据结构,比如patricia trie()或三元搜索树()。它们将大大缩短搜索时间,并且根据字符串中的重叠量,实际上可能会减少内存需求。Java集合在许多方面都很好,但对于大型短字符串集来说并不是最佳选择。

    在这种情况下,您的字符串编号是50。您可以使用Java集合数据库,这将花费大量时间。

    在这种情况下,您可以使用Java集合数据库,这将花费大量时间。

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

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

    我肯定会坚持使用sqlite。它在初始化和查询方面都非常快。SQLite在应用程序进程中运行,所以初始化几乎并没有时间损失。查询通常在后台线程中触发,以不阻止主线程。它在50000条记录上的速度非常快,并且不会在内存中加载所有数据,这一点也很重要。

    我肯定会坚持使用SQLite。它在初始化和查询方面都非常快。SQLite在应用程序进程中运行,所以初始化几乎并没有时间损失。查询通常在后台线程中触发,以不阻止主线程。它在50000条记录上的速度非常快,并且不会在内存中加载所有数据,这一点也很重要。

    忘了提一下:字符串不长(大多在1到30个字符之间)。不确定这对数据库实现是否重要。我将从SQLite DB开始,并且只有在它没有为您提供其他选项所需的性能时才考虑。忘记提及:字符串不长(大部分在1到30个字符之间)。不确定这对数据库实现是否重要。我将从SQLite DB开始,并且只有在它没有为您提供其他选项所需的性能时。