我有一个ArrayList并想按降序对其进行排序。我用它的java.util.stream.Stream.sorted(Comparator)
方法。这是根据Java API的描述:
返回由该流的元素组成的流,并根据提供的进行排序
Comparator
。
这种方法给我一种升序排序。我应该更改哪个参数,以使其具有降序顺序?
Answers:
您可以使用Comparator.reverseOrder()
具有自然顺序相反的比较器。
如果要颠倒现有比较器的顺序,可以使用Comparator.reversed()
。
样例代码:
Stream.of(1, 4, 2, 5)
.sorted(Comparator.reverseOrder());
// stream is now [5, 4, 2, 1]
Stream.of("foo", "test", "a")
.sorted(Comparator.comparingInt(String::length).reversed());
// stream is now [test, foo, a], sorted by descending length
您还可以使用Comparator.comparing(Function,Comparator)
必要时可以方便地链接比较器,例如:
Comparator<SomeEntity> ENTITY_COMPARATOR = comparing(SomeEntity::getProperty1, reverseOrder())
.thenComparingInt(SomeEntity::getProperty2)
.thenComparing(SomeEntity::getProperty3, reverseOrder());
Java 8Comparator
接口具有以下reversed
方法:https : //docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#reversed--