用于在Java中存储和搜索具有多个字段的元素的最佳数据结构

时间:2014-04-18 08:55:17

标签: java data-structures hashset

性能始终是一项重要挑战。

我正在开发一段代码以构建语言模型。

我有一个包含这么多句子的语料库。我需要将此语料库的单词存储在数据结构中,并在需要计算概率时查找以下统计信息: 例如:

  • 我需要知道语料库中特定单词的计数。 (语料库中存在多少次单词?)
  • 我需要知道两个单词的计数。假设有两个单词名为W1和W2。我需要知道语料库中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;
    }
}

我运行我的程序,我得到了正确的答案。但执行时间太可怕了! 我的问题是这样的:基于我已经描述的条件,做这样一项工作的最佳数据结构是什么?我听说过HashsetHashset中的搜索费用为O(1)而不是O(n);但是,我并不确切知道如何使用它。

0 个答案:

没有答案