我正在研究 nGram,我正在使用嵌套的 TreeMap 类型的数据结构来存储 ngram。Quadgrams 的模板如下所示。
public TreeMap<String, TreeMap<String, TreeMap<String, TreeMap<String, Integer>>>> ngramWordCounter;
当我试图将它转储到文件时出现问题,基本上我正在迭代第一个映射的 keySet,然后进入第二个映射的 keymap,依此类推。结果创建了很多临时对象,我得到了 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
}
}
}
}
有没有更好的方法来迭代这个列表而不创建临时对象?