我在 Java 中有一个源 HashMap:
HashMap<String, Integer> keyWordFrequencies;
存储各种长度的关键字。我想遍历这个 HashMap 并计算出存储在映射的 String 部分中的 ngram 的长度,该部分定义了每个关键字的文本。
使用这些数据,我想填充 HashMaps 的目标 ArrayList:
ArrayList<HashMap<String, Integer>> keywordNgrams;
有了结果,ArrayList 的索引对应于给定关键字的 ngram 大小减一,即 keywordNGrams(0) 将接收 unigram,keywordNGrams(1) 将接收 bigram,依此类推。但我不确定必要的语法。遍历源 HashMap 很容易:
Set keyWordFrequenciesSet = keyWordFrequencies.entrySet();
Iterator keyWordFrequenciesIterator = keyWordFrequenciesSet.iterator();
while(keyWordFrequenciesIterator.hasNext()) {
Map.Entry m = (Map.Entry) keyWordFrequenciesIteratorIterator.next();
int ngramLength = String_Utils.getLengthOfNgram(m.getKey().toString());
Add element to keywordNgrams?
但是将元素添加到 HashMap 的目标 ArrayList 让我感到困惑。我试过了:
keywordNgrams.add(ngramLength, m);
和各种替代方案,但无济于事。m 应该是 HashMap 的一个元素,而不是 HashMap 本身。谁能建议我错在哪里?
理想情况下,我想遍历一次源 HashMap keyWordFrequencies,然后将keywordNgrams ArrayList 初始化为最大可能的ngram 大小。