一尘不染

如何确定列表是否用Java排序?

java

      我想要一个方法,该方法采用List<T>where T实现Comparable和返回,true或者false取决于列表是否已排序。

用Java实现此的最佳方法是什么?显然,泛型和通配符是为了能够轻松处理此类问题,但我正全神贯注。

如果有一个类似的方法来检查列表是否是相反的顺序,那也很好。


阅读 385

收藏
2020-03-24

共1个答案

一尘不染

Guava 通过其出色的Ordering类提供了此功能。An OrderingComparator++。在这种情况下,如果你具有实现的某种类型的列表Comparable,则可以编写:

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

这适用于任何Iterable,而不仅仅是List,你可以null通过指定s应该在其他任何非null元素之前还是之后轻松地处理s :

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

另外,由于你提到你希望能够检查颠倒顺序和正常顺序,因此可以这样做:

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

Java 8用户:请改用等效的Java语言Comparators#isInOrder(Iterable),因为其余的Ordering大多已过时(如类文档中所述)。

2020-03-24