java - 如何反转 SortedSet 的顺序

标签 java treeset 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, 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/

相关文章:

java - 使用动态负载调度的并行图像卷积滤波器: artifacts

java - 这个私有(private)方法在这个单例 Java 类中做了什么?

JAVA SQL - 找不到适用于 jdbc 的驱动程序 :derby

java - 如何让超链接与 Spring Boot Controller 配合良好?

Redis:当插入的元素在开头或结尾时,ZADD 是否优于 O(logN)?

android - 使用 TreeSets 作为 ArrayAdapters 的等效项而不是 ArrayLists

java - TreeSet.contains() 不会调用被覆盖的 equals

带有自定义比较器的 java TreeSet 不起作用

java - Sortedset子列表打印

java - 修剪已排序的集合