我想要一个方法,该方法采用List<T>where T实现Comparable和返回,true或者false取决于列表是否已排序。
用Java实现此的最佳方法是什么?显然,泛型和通配符是为了能够轻松处理此类问题,但我正全神贯注。
如果有一个类似的方法来检查列表是否是相反的顺序,那也很好。
Guava 通过其出色的Ordering类提供了此功能。An Ordering是Comparator++。在这种情况下,如果你具有实现的某种类型的列表Comparable,则可以编写:
Ordering
Comparator++
Comparable
boolean sorted = Ordering.natural().isOrdered(list);
这适用于任何Iterable,而不仅仅是List,你可以null通过指定s应该在其他任何非null元素之前还是之后轻松地处理s :
Iterable
List
null
Ordering.natural().nullsLast().isOrdered(list);
另外,由于你提到你希望能够检查颠倒顺序和正常顺序,因此可以这样做:
Ordering.natural().reverse().isOrdered(list);
Java 8用户:请改用等效的Java语言Comparators#isInOrder(Iterable),因为其余的Ordering大多已过时(如类文档中所述)。
Comparators#isInOrder(Iterable)