Comparator.comparing(SortedClass::getValue)
.thenComparing(( SortedClass::getKey),reverseOrder());
VS
Comparator.comparing(SortedClass::getValue)
.reversed()
.thenComparing(SortedClass::getKey).reversed();
查看第二个代码,似乎最终值将按值降序排序,然后再按键降序排序。但令人惊讶的是,这两种表达都给了我相同的结果有什么解释吗?
答案 0 :(得分:4)
也许更容易看出你是否分成两个陈述。
Comparator<SortedClass> comp1 = Comparator.comparing(SortedClass::getValue)
.reversed()
.thenComparing(SortedClass::getKey);
Comparator<SortedClass> comp2 = comp1.reversed();
comp1
是“按值降序排序,然后按键升序排序”。因此,当你逆转这一点时,你当然会得到“按价值升序排序,然后按关键降序排序”。