我想使用以下方法在 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/