在Java示例中以相反的顺序迭代TreeMap

本示例说明如何以相反的顺序迭代Java TreeMap。该示例还显示了如何使用reverseOrder,descendingKeySet和DescendingMap方法以相反的顺序迭代TreeMap。

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

可以使用多种方法沿相反的方向迭代TreeMap对象,如下所示。

1.使用Collections类的reverseOrder方法

Collections类的reverseOrder方法返回一个Comparator,它强加对象的自然顺序。然后,我们可以在TreeMap构造函数中使用此比较器对象来创建一个按键的相反顺序存储映射的对象。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Collections;
import java.util.TreeMap;
 
public class TreeMapIterateReverseExample {
 
    public static void main(String[] args) {
        
        /*
         * Create TreeMap object that sorts the entries
         * using the reverse order
         */
        TreeMap<Integer, String> tmapColors = new TreeMap<Integer, String>( Collections.reverseOrder() );
        
        tmapColors.put(1, "Red");
        tmapColors.put(2, "Green");
        tmapColors.put(3, "Blue");
        
        /*
         * TreeMap entries will be automatically sorted in the
         * reverse order of the keys
         */
        System.out.println("TreeMap contains: " + tmapColors);
    }
}

输出

 
1
TreeMap contains: {3=Blue, 2=Green, 1=Red}

注意:上面给出的方法在TreeMap对象创建时起作用。如果您有未使用reverseOrder方法创建的现有地图对象,则可以使用以下给定的方法以相反的顺序迭代地图。

2.使用TreeMap类的DescendingKeySet方法

descendingKeySet方法返回TreeMap对象中包含的相反顺序的Set视图。

 
1
public NavigableSet<K> descendingKeySet()

集合视图的迭代器以降序返回TreeMap键。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
TreeMap<Integer, String> tmapColors = new TreeMap<Integer, String>();
 
tmapColors.put(1, "Red");
tmapColors.put(2, "Green");
tmapColors.put(3, "Blue");
 
/*
* Use the descendingKeySet method to get a set
* view of keys in descending order
*/
Set<Integer> reverseKeys = tmapColors.descendingKeySet();
 
/*
* This iterator will return keys in the descending or
* reverse order
*/
Iterator<Integer> iterator = reverseKeys.iterator();
 
Integer key = null;
while(iterator.hasNext()){
    
    key = iterator.next();
    System.out.println( key + "->" + tmapColors.get(key) );
}

输出

 
1
2
3
3->Blue
2->Green
1->Red

重要的提示:

descendingKeySet方法返回的键集 是一个视图,并由原始TreeMap对象支持。您对此视图所做的任何更改都会反映到原始TreeMap对象上,反之亦然。

另外,此设置视图不支持addaddAll操作。如果在集合视图上调用addoraddAll方法,则代码将引发java.lang.UnsupportedOperationException异常。

3.使用TreeMap类的descendingMap方法

descendingMapTreeMap类的方法返回一个映射,该映射包含此TreeMap对象中包含的映射的反向视图。

 
1
public NavigableMap<K,V> descendingMap()

一旦获得此映射,就可以使用条目集的迭代器遍历条目。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
TreeMap<Integer, String> tmapColors = new TreeMap<Integer, String>();
 
tmapColors.put(1, "Red");
tmapColors.put(2, "Green");
tmapColors.put(3, "Blue");
 
/*
* Use the descendingMap method to get a map containing
* reverse view of mapping
*/
Map<Integer, String> reverseMap = tmapColors.descendingMap();
 
/*
* Get an iterator for all the entries
*/
Iterator<Map.Entry<Integer, String>> iterator = reverseMap.entrySet().iterator();
 
Map.Entry<Integer, String> entry = null;
while(iterator.hasNext()){
    
    entry = iterator.next();
    System.out.println( entry.getKey() + "->" + entry.getValue() );
}

输出

 
1
2
3
3->Blue
2->Green
1->Red

注意:descendingMap方法返回的降序地图是一个视图,因此您所做的任何更改都将反映在原始TreeMap中,反之亦然。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值