Java 通过搜索在内存中设置

标签 java search set

我需要在内存中缓存大量数据并能够非常有效地搜索它。它本质上是一个字符串列表,对于给定的输入,我想返回包含该输入的字符串列表。

例如,如果列表包含以下字符串:

abc def
def ghi
ghi jkl

输入是:

ef

我想返回前两个字符串作为输出(最好按字母顺序)。

我正在考虑使用 Java Set实现,将所有字符串放入其中,并放入内存中。对于任何给定的输入,我将循环遍历 Set 并使用 String.contains() 查找包含输入的记录,并将结果添加到另一个 Set列表

这是实现这一目标的最有效方法吗?性能非常重要,而且数据量非常大(数十兆字节)。如有必要,我可以为此目的拥有一个具有大量内存的专用服务器实例。

最佳答案

SetHashSet 尤其不会提供出色的性能,因为您必须迭代整个 set 并执行 contains 检查输入是否是子字符串。您肯定需要一个字符串数据结构。

最后,您可以使用 Lucene这是 Java 的文本倒排索引,也可以在堆外工作

关于Java 通过搜索在内存中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324406/

相关文章:

delphi - 将类型声明为集合的子集

Python 字典中数组的交集

java.lang.RuntimeException : org. apache.nutch.plugin.PluginRuntimeException : java. 使用nutch解析时出现lang.ClassNotFoundException

java - 如何使循环运行与用户输入一样多的次数?

C MPI 数组搜索帮助 (MPI_Scatter)

asp.net-mvc-3 - 乌布拉科 5 : site search

api - 使用 API 访问公共(public)(部分程序)变量

java - 错误[org.jboss.msc.service.fail](MSC服务线程1-3)MSC000001 : Failed to start service jboss.部署.单元。 .POST_MODULE

java - 致命异常(java.lang.IllegalStateException)

api - Soundcloud - 搜索的不仅仅是术语?