【发布时间】:2011-06-20 22:22:15
【问题描述】:
编辑:
我听从了您的好建议,并使用了 trie 数据结构来包含我的字典。我为感兴趣的人选择的结构是this one。
但现在我还有另一个问题:每次启动应用程序时构建的 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);
之后,我将我的值放入列表视图中。
它有效,但它真的很慢:你能帮帮我吗?
【问题讨论】:
标签: android optimization data-structures implementation trie