0

Collection (または場合によっては Iterable でさえも) がクラス コントラクトによって順序付けられることが保証されているかどうかを判断する方法を探しています。

私はすでに Guava メソッドを知っています :Ordering.natural().isOrdered(myCollection) しかし、このメソッドはコレクション内の値が順序付けられているかどうかをチェックするため、私のニーズには関係ありません。それは私が決定する必要があるものではありません。私が持ちたいのは、次のisSortedように動作するメソッドです:

isSorted(new HashSet()) -> false
isSorted(new ArrayList()) -> true

等...

私が見ているのは、通常、コレクションのクラスをチェックし、それをコレクションのある種の参照テーブルと比較することによって実装されます。コレクションは、それらが順序付けられていることを契約し、これらのクラスに対してのみ true を返します。

このようなものがすでにいくつかのライブラリに存在するかどうか知っていますか?

4

3 に答える 3

0

順序付きコレクションには、List、SortedSet、SortedMap の 3 つのインターフェイスがあります。クラスがそれらのいずれかを実装しているかどうかを確認できます。

于 2012-03-09T14:25:16.987 に答える
0

コレクションがソートされるように定義されているかどうかを判断するには、次の操作を実行できます。

collection instanceof SortedSet
于 2012-03-09T14:07:38.457 に答える
0

いいえ、これはどのライブラリにも存在しません。正当な理由があります。

そのライブラリは、飛び回っているすべてのコレクション タイプを認識している必要があります。Apache Commons Collections を使用している場合は、それらすべてを認識している必要があります。Guava を使用している場合は、それらすべてを認識している必要があります。誰かがやってきて新しいコレクション型を導入した場合、たとえそれが注文されたとしても、その型を拒否することになります。

他のコレクションタイプが存在する可能性がある他のライブラリを認識できないライブラリでそのメソッドを提供することは意味がありません。

最終的なアプリケーションでは、既に説明したヒューリスティック手法を使用して実装することが理にかなっている場合があります。

この方法で実際に何をしようとしているのかを知っていれば、役立つかもしれません.

于 2012-03-09T17:54:13.890 に答える