Java 如何在不创建临时对象的情况下迭代嵌套树映射

Java 如何在不创建临时对象的情况下迭代嵌套树映射,java,garbage-collection,treemap,temporary-objects,Java,Garbage Collection,Treemap,Temporary Objects,我正在研究nGrams,我正在使用一种嵌套的树状图数据结构来存储nGrams。四边形的模板如下所示 public TreeMap<String, TreeMap<String, TreeMap<String, TreeMap<String, Integer>>>> ngramWordCounter; 有没有更好的方法在不创建临时对象的情况下迭代此列表?不会创建新对象。将创建新的引用 映射返回对键集中键的引用。使用来探索这个概念,或者您可以阅读有关

我正在研究nGrams,我正在使用一种嵌套的树状图数据结构来存储nGrams。四边形的模板如下所示

public TreeMap<String, TreeMap<String, TreeMap<String, TreeMap<String, Integer>>>> ngramWordCounter;

有没有更好的方法在不创建临时对象的情况下迭代此列表?

不会创建新对象。将创建新的引用

映射返回对键集中键的引用。使用来探索这个概念,或者您可以阅读有关这个概念的java教程

我更喜欢下面的方法来迭代映射

for (Map.Entry<String, String> entry : map.entrySet()) {
        String key = entry.getKey();
            String value = entry.getValue();
            // process key and value
}
for(Map.Entry:Map.entrySet()){
String key=entry.getKey();
字符串值=entry.getValue();
//过程关键和价值
}

循环终止后,引用
字符串键
字符串值
会发生什么变化?这些变量需要由GarbageCollector清理,因为字符串实际上是对象。[是的,引用将被删除,而不是实际对象。如果您检查实现,内部TreeMap将存储条目对象本身。但所有处理都在循环内(根据给定的示例代码猜测)
for (Map.Entry<String, String> entry : map.entrySet()) {
        String key = entry.getKey();
            String value = entry.getValue();
            // process key and value
}