【问题标题】:Java Hashmap Iteration: Look at two values at once?Java Hashmap 迭代:一次查看两个值?
【发布时间】:2009-09-17 01:13:31
【问题描述】:

我有这个循环:

 for (Map.Entry<Integer, String> entry: collection.entrySet()) {

 }

我想比较entry 和之后的下一个。我该怎么做?

【问题讨论】:

  • 如果您使用 HashMap,您需要记住它不会保留插入顺序。如果您需要插入顺序,则需要使用 LinkedHashMap。
  • @Tom:排序后的地图本身不会保留输入顺序——它们会保留排序顺序,这通常是另一回事,不是吗?

标签: java comparison loops hashmap


【解决方案1】:

你在前一个上做。

Map.Entry<Integer, String> previous = null;
for (Map.Entry<Integer, String> entry : collection.entrySet()) {
  if (previous != null) {
    // compare entry to rpevious
  }
  previous = entry;
}

【讨论】:

    【解决方案2】:

    当您循环时,您可以设置一个名为 oldEntry 的变量,例如(初始化为 null)并以您想要的方式使用它。

     Map.Entry<Integer,String> oldEntry = null;
     for (Map.Entry<Integer, String> entry: collection.entrySet()) {
       if (oldEntry != null) doStuff(oldEntry, newEntry);
       oldEntry = entry;
     }
    

    【讨论】:

    • 我想知道这是否会强制使用 posh for 循环,我们应该改用迭代器。
    • 什么时候会使用迭代器而不是循环?
    猜你喜欢
    • 2015-04-22
    • 2017-07-27
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2015-09-19
    • 2011-03-21
    • 2013-10-23
    相关资源
    最近更新 更多