Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Android字典树集更快的加载时间_Android_Performance_Data Structures_Treeset - Fatal编程技术网

Android字典树集更快的加载时间

Android字典树集更快的加载时间,android,performance,data-structures,treeset,Android,Performance,Data Structures,Treeset,我的字典里有300000个单词(实际上是以txt格式(新行分隔)保存在Android设备的SD卡上)。 我想构建一个数据结构,在这个数据结构中尽可能少地从我的txt文件中插入单词(String-s)。这个DS必须非常快速地检查字典中是否有单词(这个DS)。 我已经尝试了几个内置DS,最快的IMO是TreeSet。是否有任何其他(非内置)DS可以更快地插入/创建DS,并与搜索树集相同 还有一件事,我可以通过重新排列来“帮助”TreeSet更快地插入 我的txt文件(将单词按正确的顺序排列) 关于首

我的字典里有300000个单词(实际上是以txt格式(新行分隔)保存在Android设备的SD卡上)。 我想构建一个数据结构,在这个数据结构中尽可能少地从我的txt文件中插入单词(String-s)。这个DS必须非常快速地检查字典中是否有单词(这个DS)。 我已经尝试了几个内置DS,最快的IMO是TreeSet。是否有任何其他(非内置)DS可以更快地插入/创建DS,并与搜索树集相同

还有一件事,我可以通过重新排列来“帮助”TreeSet更快地插入 我的txt文件(将单词按正确的顺序排列)


关于

首先,在为您的应用程序找到最佳结构方面做得很好。通常,人们会在没有尝试各种选项以获得实际性能数据的情况下进行争论

如果您希望节省构建时间,并且words文件不会经常更改,那么构建速度的明显提高就是缓存数据结构。无论使用什么数据结构,构建一次结构,然后将结构存储到SD卡(而不仅仅是存储字符串)。可以使用存储标准java.util结构

如果您想要最快的构建时间,并且您的单词列表按字母顺序排序,或者可以按字母顺序排序,那么您可以只存储在字符串数组中。构建时间将非常快,搜索时间将类似于树集(使用)

如果希望更快地查找,可能需要签出ing或s,但Java标准库中没有这些

trie将比这两种方法中的任何一种都更高效,这可能会使它更快。()


我很惊讶TreeSet在您的实验中比HashSet快,这意味着您可能在内存分配昂贵的情况下运行。您是否记得在分配哈希集时设置初始容量?请记住,为了避免昂贵的重新灰化,您需要将初始容量设置为至少项数/0.75(负载系数)

+1用于提及序列化。如果这是一本只读词典,那么它应该是首选的方法。+1,我喜欢你的答案。在HashSet测试中,我没有设置任何容量/负载因子参数。如果我没弄错的话,如果我有300000个单词,我必须将容量设置为300000/0.75,负载系数设置为0.75?我将尝试序列化并将创建的数据结构保存到SD卡。又是Thx