Guava provides this functionality through its awesome Ordering class. An Ordering
is a Comparator
++. In this case, if you have a list of some type that implements Comparable
, you could write:
boolean sorted = Ordering.natural().isOrdered(list);
This works for any Iterable
, not just List
, and you can handle null
s easily by specifying whether they should come before or after any other non-null
elements:
Ordering.natural().nullsLast().isOrdered(list);
Also, since you mentioned that you'd like to be able to check for reverse order as well as normal, that would be done as:
Ordering.natural().reverse().isOrdered(list);
Java 8 users: Use the equivalent Comparators#isInOrder(Iterable)
instead, since the rest of Ordering is mostly obsolete (as explained in the class documentation).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…