编辑 :
我听从了你的好建议,并使用了 trie 数据结构来包含我的字典。我为感兴趣的人选择了这个结构。
但是现在我还有另一个问题:每次启动应用程序时构建的 trie 数据结构都非常长!也许我的字典太大了,或者我选择的 trie 的实现对于简单的字典来说太不合适了。
那么有没有办法在关闭应用程序(如注册数据库)之后保存这种结构,或者如果您认为问题是由实施引起的,您可以推荐我另一个吗?
我的android项目有一个严重的问题。
这里的目标是计算可以用一系列 6 个字母组成的所有单词
为此,我的 BDD 中有两个表:
- 'words' 有两列:'_id' 和 'mots'
- 和 'temp' 具有相同列的临时表。
'words' 包含词汇表中的所有单词(它很大),'temp' 包含可以用 6 个字母组成的所有可能的字母组合(至少使用 3 个字母)。
我正在尝试在“temp”表中选择真实的单词,以便在“words”表中选择单词。这是我的代码:
我首先选择包含好字母的单词(至少使用 3 个字母)
db.execSQL("CREATE TABLE temp2 (_id integer primary key autoincrement, mots text not null);");
db.execSQL("INSERT INTO temp2 (_id, mots) SELECT * FROM words WHERE mots like '%"+lettres.tab_char.get(0)+"%' OR mots like '%"+lettres.tab_char.get(1)+"%' "
+ "OR mots like '%"+lettres.tab_char.get(2)+"%' OR mots like '%"+lettres.tab_char.get(3)+"%' OR mots like '%"+lettres.tab_char.get(4)+"%' "
+ "OR mots like '%"+lettres.tab_char.get(5)+"%';");
(lettre.tab_char 是一个 ArrayList(Character),其中包含用于在 temp 中进行组合的字母)
我在表 'temp2' 和 'temp' 之间进行连接:
String MY_QUERY = "SELECT temp2._id, temp2.mots FROM temp2 INNER JOIN temp ON temp2.mots = temp.mots;";
Cursor test = db.rawQuery(MY_QUERY, null);
之后,我将我的值放入列表视图中。
它有效,但它真的很慢:你能帮帮我吗?