java - 在 Java 中对 Hash Map 进行两次迭代

标签 java

我使用以下方式加入先验连接步骤中生成的集合

Iterator<Entry<List<Integer>, Integer>> i1 = hm.entrySet().iterator() ;
Iterator<Entry<List<Integer>, Integer>> i2 = hm.entrySet().iterator() ;

while(i1.hasNext()) {
    while(i2.hasNext()) {

        Entry<List<Integer>, Integer> pair1 = i1.next() ; 
        Entry<List<Integer>, Integer> pair2 = i2.next() ; 

        // Do some joining part here

        System.out.println(pair1.getKey());
        System.out.println(pair2.getKey());

        } 
    }
}

实际上,我认为它会遍历 HashMap 的所有 n*n 值。但是正在发生的事情是两个迭代器都在并行执行并且只执行 n 次,就好像两个迭代器是相同的一样。请提出一种方法来克服这个问题。

最佳答案

您必须在外循环中创建第二个迭代器,以便它在每次内循环迭代之前重新开始迭代条目。

另一个必需的更改是获取内部循环之外的第一个迭代器的当前条目。

Iterator<Entry<List<Integer>, Integer>> i1 = hm.entrySet().iterator() ; 
while(i1.hasNext()) {
    Entry<List<Integer>, Integer> pair1 = i1.next() ; 
    Iterator<Entry<List<Integer>, Integer>> i2 = hm.entrySet().iterator() ;
    while(i2.hasNext()) {
        Entry<List<Integer>, Integer> pair2 = i2.next() ; 
        // Do some joining part here

        System.out.println(pair1.getKey());
        System.out.println(pair2.getKey());
        } 
    }
}

关于java - 在 Java 中对 Hash Map 进行两次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33730692/

相关文章:

java - 将可执行文件 .jar 嵌入 jframe 中

java - .prpt 报告从 java 运行

Java - 混淆字母

java - 选定包的代码覆盖率

java - java 中的访问者模式实现 - 这看起来怎么样?

java - 如何处理 JUnit 设置方法中的异常

java - 新的谷歌分析 SDK 4

javascript - 如何在页面加载后立即通过 Bean JSF 传递参数来调用 JS 函数?

java - 如何从 Ant 启动聚合 jetty-server JAR?

java - 如何创建选项卡 - Jquery 或 JSF