Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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应用程序的完整word数据库检查一个单词是否实际上是合法单词,在这种情况下SQL是否合适?_Java_Sql - Fatal编程技术网

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

用于Java应用程序的完整word数据库检查一个单词是否实际上是合法单词,在这种情况下SQL是否合适?,java,sql,Java,Sql,我将要写一个游戏,在这个游戏中,我经常要检查一串字母是否是一个单词。我的问题是如何以尽可能少的计算能力以最快的速度完成这项工作(例如,一部旧的智能手机)。如果可能的话,没有太多的启动时间使其成为一个快速响应的应用程序 有一次,我通过将几乎所有的单词第一次读入一个大小合适的约650000个单词的散列图*,来进行查找。(*可能更多,我不确定这是否是一份详尽的清单) SQL数据库在这里合适吗?我正在考虑买一本关于它的书,这样我就可以学习并实现它。我也不知道如何创建一个散列映射,保存它以备以后使用,然后

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

有一次,我通过将几乎所有的单词第一次读入一个大小合适的约650000个单词的散列图*,来进行查找。(*可能更多,我不确定这是否是一份详尽的清单)


SQL数据库在这里合适吗?我正在考虑买一本关于它的书,这样我就可以学习并实现它。我也不知道如何创建一个散列映射,保存它以备以后使用,然后加载一个。这是不是太多的黑客解决方案,还是更经常使用这种技术?因此,对我来说,学习SQL或者保存一个hashmap,然后再恢复它对我来说有意义吗。

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


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

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

您需要逐步解释吗?我问这个问题是为了获得一些基本建议,关于何时选择数据库而不是您自己编程的内部结构,但是在这个特殊的情况下,你有一个很大的词集,你想尽快检查它是否包含这个词。如果您能描述一下为什么SQL数据库在这里是合适的,那就太好了。我还不知道创建这样一个数据库有多难,所以一步一步的解决方案/解释似乎太多了,因为我还没有探索这个方向。我的问题是我是否应该探索它..搜索“java拼写检查器”。一般来说,人们会将字典(如文本形式)预编译为某种二进制格式。一般来说,这样的事情不是用数据库来完成的。“旧智能手机”的意思是“没有太多的空间和cpu”。您需要仔细考虑如何压缩数据以节省空间,并且在使用数据时仍然不使用大量CPU。您知道这个大小的单词列表会占用多少RAM吗?用B-树不在RAM中,它将处于长期存储(FLASH?)中。