私は Java でソース HashMap を持っています:
HashMap<String, Integer> keyWordFrequencies;
さまざまな長さのキーワードを格納します。この HashMap をトラバースして、各キーワードのテキストを定義するマップの String 部分に格納されている ngram の長さを計算します。
このデータを使用して、HashMap のターゲット ArrayList を設定します。
ArrayList<HashMap<String, Integer>> keywordNgrams;
その結果、ArrayList のインデックスは、特定のキーワードの ngram サイズから 1 を引いた値に対応します。つまり、keywordNGrams(0) はユニグラムを受け取り、keywordNGrams(1) はバイグラムを受け取ります。しかし、必要な構文がわかりません。ソース 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 keyWordFrequency を 1 回トラバースし、keywordNgrams ArrayList を可能な限り最大の ngram サイズに初期化して開始します。