ArrayListがあり、降順で並べ替えたい。 Java.util.stream.Stream.sorted(Comparator)
メソッドに使用します。 Java APIによる説明は次のとおりです。
指定された
Comparator
に従ってソートされた、このストリームの要素で構成されるストリームを返します。
このメソッドは、昇順でソートを返します。降順にするために、どのパラメーターを変更する必要がありますか?
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
Java 8 Comparator
インターフェースにはreversed
メソッドがあります: https://docs.Oracle.com/javase/8/docs/api/Java/util/Comparator.html#reversed--
Comparator.comparing(Function、Comparator) を使用することもできます
必要に応じてコンパレーターを連鎖させると便利です。例:
Comparator<SomeEntity> ENTITY_COMPARATOR = comparing(SomeEntity::getProperty1, reverseOrder())
.thenComparingInt(SomeEntity::getProperty2)
.thenComparing(SomeEntity::getProperty3, reverseOrder());