我有一个字典数据库,其中包含总共99,833个单词,但每个字母分隔。 我正在测试包含3922个单词的dictionaryA.txt。
案例1:
当我输入一个单词时,我想要查找,然后说" abacus", 使用缓冲的阅读器,我的应用程序说"论文没有响应。等等 - 退出"。如果我选择等待,它将返回算盘及其定义。
CODE:
InputStream inputStream = getResources().openRawResource(R.raw.definitiona);
try {
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String s = in.readLine();
String delimiter = " - ";
String del[];
while(s != null)
{
s = in.readLine().replaceAll("\\s+", " ");
del = s.split(delimiter);
if (enhancedStem.equals(del[0]))
{
in.close();
databaseOutput.setText(s);
break;
}
}
in.close();
}
catch (FileNotFoundException e) {
databaseOutput.setText("" + e);
}
catch (IOException e1) {
databaseOutput.setText("" + e1);
}
案例2:
当我输入一个单词时,我想要查找,然后说" abacus", 使用strings.xml(我在字符串数组中传输了整个3922个单词),它说的相同。我必须在响应之前单击等待。
CODE:
String[] wordA = getResources().getStringArray(R.array.DictionaryA);
String delimiter = " - ";
String[] del;
for (int wordActr = 0; wordActr <= wordA.length - 1; wordActr++)
{
String wordString = wordA[wordActr].toString();
del = wordString.split(delimiter);
if (enhancedStem.equals(del[0]))
{
databaseOutput.setText(wordA[wordActr]);
break;
}
else
databaseOutput.setText("Word not found!");
}
你能告诉我哪个更好吗?我应该继续使用我的文本文件吗?或者将它们转移到strings.xml,因为它们都响应缓慢?你有什么想法我可以消除&#34;没有回应&#34;问题? 提前谢谢!
答案 0 :(得分:2)
在文本文件中使用Xml的主要优点是
所以最好使用xml ...
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您显示一些代码,这会更容易。我的第一个猜测是,由于您的UI没有响应,您正在UI线程上执行“搜索任务”。在UI线程上执行繁重的任务通常不是一个好主意,而是应该查看AsyncTasks,Threads或其他什么,无论什么最适合。 通过在后台执行任务,用户仍然可以与您的应用程序进行交互 - 例如,如果他的搜索中有拼写错误或者根本不在意,则停止搜索任务。在搜索完成并获取结果之前,您只需显示某种等待对话框。
我无法分辨你的两个建议中的哪一个更快。你可以创建两个线程,既可以采用一种方式,也可以测量时间。
答案 3 :(得分:0)
99,833字可以存储在不到2 MB
中在这种情况下,最快的是保留在内存中,所以案例3:)