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