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

在Java中存储和搜索具有多个字段的元素的最佳数据结构,java,data-structures,hashset,Java,Data Structures,Hashset,绩效始终是一个重要的挑战 为了建立一个语言模型,我正在开发一段代码 我有这么多句子的语料库。我需要将语料库中的单词存储在数据结构中,并在需要计算概率时查找以下统计信息: 例如: 我需要知道语料库中特定单词的数量。(一个词在语料库中存在多少次?) 我需要知道这两个词对的计数。假设有两个单词,分别命名为W1和W2。我需要知道在语料库中,W1-w2的组合出现了多少次,三个词的组合出现了多少次W1-w2-W3 目前,我使用以下数据结构来存储单词: private class WordList {

绩效始终是一个重要的挑战

为了建立一个语言模型,我正在开发一段代码

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

  • 我需要知道语料库中特定单词的数量。(一个词在语料库中存在多少次?)
  • 我需要知道这两个词对的计数。假设有两个单词,分别命名为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;
    }
}
我运行我的程序,我得到了正确的答案。但是执行时间太长了!
我的问题是:基于我已经描述的条件,做这样一项工作的最佳数据结构是什么?我听说了
Hashset
,而
Hashset
中的搜索成本是
O(1)
,而不是
O(n)
;但是,我不知道如何使用它。

我不知道如何使用它。我不知道如何使用它。
这是什么意思?我的意思是我有一个单词,我想要一个单词本身的字段和一个保持单词计数的整型字段。存储w1和w2以及“w1 w2”计数的方法相同。如何将具有多个不同类型字段的元素插入哈希集中?然后搜索查找元素并读取特定元素字段的值?