性能始终是一项重要挑战。
我正在开发一段代码以构建语言模型。
我有一个包含这么多句子的语料库。我需要将此语料库的单词存储在数据结构中,并在需要计算概率时查找以下统计信息: 例如:
W1 w2
的组合和三个词W1 W2 W3
目前我使用以下数据结构来存储单词:
private class WordList {
public String word = "";
public int count = 0;
public WordList(String _word, int _count) {
word = _word;
count = _count;
}
}
对于这两个单词的对,我存储了所有对:
private class bi_WordList {
public String bi_word_1 = "";
public String bi_word_2 = "";
public int bi_count = 0;
public bi_WordList(String _word_1, String _word_2, int _count) {
bi_word_1 = _word_1;
bi_word_2 = _word_2;
bi_count = _count;
}
}
我运行我的程序,我得到了正确的答案。但执行时间太可怕了!
我的问题是这样的:基于我已经描述的条件,做这样一项工作的最佳数据结构是什么?我听说过Hashset
,Hashset
中的搜索费用为O(1)
而不是O(n)
;但是,我并不确切知道如何使用它。