我想使用以下命令在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, 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>(Collections.reverseOrder());
orderList.addAll(mylist.keySet());

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

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

关于java - 如何颠倒SortedSet的顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35122490/

10-10 01:01
查看更多