比较器reverseOrder在Java8中的理解

时间:2018-03-29 12:32:43

标签: java-8

Comparator.comparing(SortedClass::getValue)
          .thenComparing((  SortedClass::getKey),reverseOrder());

VS

Comparator.comparing(SortedClass::getValue)
          .reversed()
          .thenComparing(SortedClass::getKey).reversed();

查看第二个代码,似乎最终值将按值降序排序,然后再按键降序排序。但令人惊讶的是,这两种表达都给了我相同的结果有什么解释吗?

1 个答案:

答案 0 :(得分:4)

也许更容易看出你是否分成两个陈述。

Comparator<SortedClass> comp1 = Comparator.comparing(SortedClass::getValue)
          .reversed()
          .thenComparing(SortedClass::getKey);

Comparator<SortedClass> comp2 = comp1.reversed();

comp1是“按值降序排序,然后按键升序排序”。因此,当你逆转这一点时,你当然会得到“按价值升序排序,然后按关键降序排序”。