Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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 ArrayList搜索多个单词_Java - Fatal编程技术网

Java ArrayList搜索多个单词

Java ArrayList搜索多个单词,java,Java,实际上,我在数组列表中存储了100万个单词,现在我需要通过键搜索特定的单词。结果不是一个单词,它可能包含多个单词 例如,假设我键入的平均值输出为[Aarhus,Aaron,Ababa,…]。结果取决于搜索单词。我该如何做,以及哪种排序算法在集合中是最好的 选项: 如果要坚持使用数组列表,请在搜索之前对其进行排序。然后找到第一个匹配搜索条件的键,并从它开始迭代,直到找到一个不匹配的键。将所有匹配的密钥收集到某个缓冲区结构中。宾果,你有你的答案。 将数据结构更改为树。任何一个 一个简单的二叉树-您可

实际上,我在数组列表中存储了100万个单词,现在我需要通过键搜索特定的单词。结果不是一个单词,它可能包含多个单词

例如,假设我键入的平均值输出为[Aarhus,Aaron,Ababa,…]。结果取决于搜索单词。我该如何做,以及哪种排序算法在集合中是最好的

选项:

如果要坚持使用数组列表,请在搜索之前对其进行排序。然后找到第一个匹配搜索条件的键,并从它开始迭代,直到找到一个不匹配的键。将所有匹配的密钥收集到某个缓冲区结构中。宾果,你有你的答案。 将数据结构更改为树。任何一个 一个简单的二叉树-您可以自动对所有键进行排序。以深度优先的方式浏览树。直到找到不匹配的密钥。 一种奇特的结构。通过这种方式,您可以自动对所有密钥进行排序,并且由于存储效率的提高,您的性能得到了显著提升。其余的都一样,导航树,收集匹配的键。
根据您的需求,您必须选择trie数据结构。这将以一种简单的方式为你提供你所需要的建议。你的搜索方式最符合模糊搜索。我建议你为它选择一个搜索引擎。像Appache lucene一样,它将非常快速、可靠且易于管理。此外,将arraylist保留为一百万个单词也不是一个好主意。关于您的示例,您是否总是需要以特定字符串开头的单词?否。假设我键入的unmatch word意味着不需要结果。@Sathesh您应该选择Trie数据结构。如果您找到具有给定文本的节点并从那里进行遍历,您将得到所需的内容。看看这个。如果在数组中执行此操作,则复杂性将增加。
int index = Collections.binarySearch(myList, SearchWord);
System.out.println(myList.get(index));