【问题标题】:Does using an Iterator over a TreeMap in Java interfere with the order of keys?在 Java 中的 TreeMap 上使用迭代器会干扰键的顺序吗?
【发布时间】:2012-01-25 10:40:25
【问题描述】:

我想知道,如果在 Java 中对 TreeMap 使用 Iterator 会干扰键的顺序?

【问题讨论】:

  • 为什么会这样?你想做什么?迭代键或值?无论如何,我不明白它为什么会干扰。
  • @Savino 在按键上。但无论如何我在 TreeMap 类中找不到 .iterator() ! :(
  • 请看下面的答案,然后你想调用 keySet() 方法,它会按排序返回它们。

标签: java iterator treemap


【解决方案1】:

来自http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html#keySet()

返回此映射中包含的键的 Set 视图。集合的迭代器按升序返回键。

如果由于某种原因您需要按降序排列的密钥,您可以使用descendingKeySet()

如果要遍历值,可以使用entrySet()

(哇,我之前不知道Map 不是Collection...)

【讨论】:

    【解决方案2】:

    否 - 它将按照 TreeMap 定义的顺序进行迭代,即键的自然顺序,或者由构造函数中指定的比较器强加的顺序。只是迭代也不会改变底层树形图中的情况。

    【讨论】:

      【解决方案3】:

      它不会干扰。它以升序为您提供密钥。

      使用entrySet的迭代器

      From official docs - entrySet

      public Set<Map.Entry<K,V>> entrySet()
      

      返回此映射中包含的映射的 Set 视图。该集合的迭代器以升序键顺序返回条目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 2021-07-01
        相关资源
        最近更新 更多