在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”计数的方法相同。如何将具有多个不同类型字段的元素插入哈希集中?然后搜索查找元素并读取特定元素字段的值?