私はnGramsに取り組んでおり、ネストされたTreeMapのようなデータ構造を使用してngramを保存しています。Quadgrams のテンプレートは次のようになります。
public TreeMap<String, TreeMap<String, TreeMap<String, TreeMap<String, Integer>>>> ngramWordCounter;
問題は、ファイルにダンプしようとしているときに発生しています。基本的に、最初のマップのキーセットを反復処理し、次に 2 番目のキーマップなどを反復処理しています。その結果、多くの一時オブジェクトが作成され、GCOverlimitExceeded エラーが発生します。繰り返しのコード スニペットは次のとおりです。
for(String key: ((Quadgram)quadgram).ngramWordCounter.keySet())
{
for(String key1: ((Quadgram)quadgram).ngramWordCounter.get(key).keySet())
{
for(String key2: ((Quadgram)quadgram).ngramWordCounter.get(key).get(key1).keySet())
{
for(String key3:((Quadgram)quadgram).ngramWordCounter.get(key).get(key1).get(key2).keySet())
{
//Do something
}
}
}
}
一時オブジェクトを作成せずにこのリストを反復処理するより良い方法はありますか?