java – 如何反转SortedSet的顺序

我想使用以下内容在Map中打印一个有序列表:
Map<Float,String> mylist = new HashMap<>();

mylist.put(10.5,a);
mylist.put(12.3,b);
mylist.put(5.1,c);

SortedSet<Float> orderlist = new TreeSet<Float>(mylist.keySet());

for (Float i : orderlist) {
    System.out.println(i+" "+mylist.get(i));
}

上面的代码打印:

5.1 c
10.5 a
12.3 b

但是如何以相反的顺序打印订单列表,如下所示:

12.3 b
10.5 a
5.1 c

解决方法

如果您愿意以相反的顺序将元素存储在SortedSet中,那么您需要做的唯一更改是使用 an appropriate constructor构建TreeSet,它采用自定义 Comparator
Map<Float,c);

SortedSet<Float> orderlist = new TreeSet<Float>(Collections.reverSEOrder());
orderList.addAll(mylist.keySet());

for (Float i : orderlist) {
    System.out.println(i+" "+mylist.get(i));
}

注意这里的整洁方法Collections.reverseOrder(),它返回一个Comparator,它与元素的自然顺序相反.

相关文章

前言 逆向工程从数据库表直接生成代码,是日常开发中常用的敏...
前言 Java网络编程之Socket套接字,Socket套接字使用TCP提供...
前言 虽然现在已经很少项目会涉及GUI技术,但作为一个合格的...
前言 几乎所有的系统都有密码安全要求,这是基础的安全策略,...
前言 当我们在写设计文档,或者是其他涉及到数据架构、表结构...
前言 Fiddler是一款强大的Web调试代理工具,又称抓包软件,本...