I'm working on a nGrams, and I'm using a nested TreeMap kind of datastructure to store the ngrams. The template for Quadgrams looks like this.
public TreeMap<String, TreeMap<String, TreeMap<String, TreeMap<String, Integer>>>> ngramWordCounter;
The problem is arising when i'm trying to dump it to a file, basically i'm iterating over keySet of first map, and then into the keymap of the second and so on and so forth. As a result a lot of temporary objects are created and i'm getting GCOverlimitExceeded Error. The code snippet for iterating is as follows,
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
}
}
}
}
Is there a better way to iterate over this list without creating temporary objects?