# 如何在 Java 中以相反的顺序迭代`TreeMap`

> 原文： [https://beginnersbook.com/2014/07/how-to-iterate-treemap-in-reverse-order-in-java/](https://beginnersbook.com/2014/07/how-to-iterate-treemap-in-reverse-order-in-java/)

默认情况下，`TreeMap`元素按键的升序排序。我们可以以相反的顺序迭代`TreeMap`，以按键的降序显示元素。

#### 以相反的顺序显示`TreeMap`元素：

```java
import java.util.*;

class TreeMapDemo {
  public static void main(String args[]) {

    Map<String, String> treemap = 
      new TreeMap<String, String>(Collections.reverseOrder());

    // Put elements to the map
    treemap.put("Key1", "Jack");
    treemap.put("Key2", "Rick");
    treemap.put("Key3", "Kate");
    treemap.put("Key4", "Tom");
    treemap.put("Key5", "Steve");

    Set set = treemap.entrySet();
    Iterator i = set.iterator();
    // Display elements
    while(i.hasNext()) {
      Map.Entry me = (Map.Entry)i.next();
      System.out.print(me.getKey() + ": ");
      System.out.println(me.getValue());
    }
  }
}
```

**输出：**

```java
Key5: Steve
Key4: Tom
Key3: Kate
Key2: Rick
Key1: Jack
```

如您所见，元素以与键相反的顺序显示。

**更多关于[`Collections.reverseOrder()` javadoc](https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#reverseOrder())：

`public static Comparator reverseOrder()`：返回一个比较器，它对实现`Comparable`接口的对象集合施加自然顺序的反转。 （自然排序是由对象自己的`compareTo`方法强加的排序。）这使得一个简单的习惯用法可以对反向自然顺序实现`Comparable`接口的对象的集合（或维护）进行排序（或维护）。例如，假设`a`是一个字符串数组。然后：`Arrays.sort(a, Collections.reverseOrder());`

以反向字典（按字母顺序）顺序对数组进行排序。返回的比较器是可序列化的。

**返回：**

一个比较器，它对实现`Comparable`接口的对象集合施加自然顺序的反转。

**参考：**

[`Collections.reverseOrder()`](https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#reverseOrder())