1. ホーム
  2. java

[解決済み] Javaでリストがソートされているかどうかを判断するには?

2023-08-06 05:41:57

質問

を受け取るメソッドが欲しいです。 List<T> ここで T を実装しています。 Comparable を実装し true または false である。

これをJavaで実装するには、どのような方法があるでしょうか? ジェネリックスやワイルドカードはそういうことを簡単に処理できるようにするためのものであることは明らかなのですが、どうもこんがらがってしまって。

また、リストが逆順かどうかをチェックするための類似のメソッドがあるといいのですが。

どのように解決するのですか?

グアバ は、この機能を 比較演算子 クラスによって提供されています。

boolean sorted = Comparators.isInOrder(list, comparator);


また 注文方法 クラスもありますが、これはほとんど時代遅れです。また OrderingComparator ++. この場合、何らかの型のリストがあり、それを実装している場合は Comparable を実装しているリストがあれば、書くことができます。

boolean sorted = Ordering.natural().isOrdered(list);

これは任意の Iterable だけでなく List を処理することができます。 null の前に来るか後に来るかを指定することで、簡単に扱うことができます。 null 要素の前に来るか後に来るかを指定することで、簡単に指定できます。

Ordering.natural().nullsLast().isOrdered(list);

また、通常だけでなく逆順もチェックできるようにしたいとのことでしたので、そのようにします。

Ordering.natural().reverse().isOrdered(list);