如何确定列表是否用Java排序?
我想要一个方法,该方法采用List<T>where T实现Comparable和返回,true或者false取决于列表是否已排序。
用Java实现此的最佳方法是什么?显然,泛型和通配符是为了能够轻松处理此类问题,但我正全神贯注。
如果有一个类似的方法来检查列表是否是相反的顺序,那也很好。
回答:
Guava 通过其出色的Ordering类提供了此功能。An Ordering
是Comparator++
。在这种情况下,如果你具有实现的某种类型的列表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大多已过时(如类文档中所述)。
以上是 如何确定列表是否用Java排序? 的全部内容, 来源链接: utcz.com/qa/404388.html