Java应用程序的完整单词数据库,用于检查一个单词是否真的是合法单词,在这种情况下SQL是否合适



我要写一个游戏,在这个游戏中,我经常要检查一串字母是否真的是一个单词。我的问题是如何以尽可能少的计算能力以最快的速度做到这一点(例如一部旧的智能手机)。如果可能的话,没有太多的启动时间使其成为一个快速响应的应用程序。

我曾经做过这样的查找,首先将一个几乎所有单词的单词文件读取到一个大约65万个单词的适当大小的哈希图中。(*可能更多,我不确定这是否是一份详尽的清单)。

SQL数据库在这里合适吗?我正在考虑买一本关于它的书,这样我就可以学习并实施它。此外,我不知道如何创建一个哈希图,保存它以备将来使用,然后加载一个。这是一个太多的黑客解决方案,还是这种技术使用得更频繁?那么,对我来说,学习SQL或者保存一个哈希图,然后再恢复它有意义吗?

如果您计划在每次需要检查单词时查询数据库SQL,那么它可能是合适的,但这不是最快的解决方案;查询每个单词会减慢响应时间,但如果单词数很高,则应该使用更少的内存(您必须测量数据库消耗的内存与映射消耗的内存)。检查一个单词是否在映射中在计算上并不那么昂贵,它必须计算哈希并迭代具有相同哈希的项数组。

就我个人而言,如果能满足将所有单词保存在内存中的内存要求,我会选择一张地图。您可以将字典存储为纯文本文件(一行->一个单词),并在应用程序启动时在后台线程中读取它。

如果内存是一个问题,这似乎是B树的一个很好的用途。这允许O(logn)搜索时间,同时以最小的内存使用量搜索大量记录。对于这种应用程序来说,将整个内容加载到内存中听起来不是一个好主意。

最新更新