java - 我的字典应该使用什么数据结构?

标签 java dictionary arraylist data-structures

我想用 Java 创建一个包含大约 10 000 个单词对的字典,但我不知道应该使用什么数据结构。如果我的字典中有一个单词,例如 because ,如果我只搜索bec,我希望程序找到它。 。如果我有一个像 the end 这样的短语如果我搜索 th 我想找到它或en .

我试过ArrayList ,但搜索速度相当慢。我不想使用实现 Map 的类接口(interface),因为它们只能为一个键存储一个值,所以我无法按照上面的描述进行搜索。

这个答案列出了字典的一些数据结构,但我认为它们对我来说不是最好的:Best data structure for implementing a dictionary?

最佳答案

您正在搜索的是 trie .

由于java框架似乎没有一个实现,请看一下this thread对于可能的库和解决方案:

  • Robert Sedgewick's book "Algorithms"中的解释和基本java实现
  • Patel's blog 上的解释和基本 java 实现
  • an oracle thread 上的解释和基本 java 实现
  • java 库 "Concurrent Radix and Suffix Trees for Java"在 GitHub 上
  • java 库 "Practical Algorithm to Retrieve Information Coded in Alphanumeric (PATRICIA)"在 GitHub 上
  • a java library作者:brianfromoregon 在 GitHub 上

  • 关于java - 我的字典应该使用什么数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34041013/

    相关文章:

    java - 如何检查文件是否存在?

    python - 如何从具有特定值的字典中提取随机键?

    java - 字符串数组问题的数组列表

    java - 中序遍历 BST 并将其添加到列表中

    python - Sqlite 和 Python——使用 fetchone() 返回字典?

    groovy - Groovy 中 2 个列表的内容求和

    java - 使用分布式计数器提高性能,寻找库

    java - 使用 java 在 JavaScript 中创建文件

    java - 如何在JSTL中实现 "instanceOf"

    Python 使用 OrderedDict 通过 LRU 进行基于大小的缓存