Guava предоставляет эту функциональность через класс Ordering . Ordering
- это Comparator
++. В этом случае, если у вас есть список некоторого типа, который реализует Comparable
, вы можете написать:
boolean sorted = Ordering.natural().isOrdered(list);
Это работает для любых Iterable
, а не только для List
, и вы можете легко обработать null
s, указав, должны ли они идти до или после любых других не null
элементов:
Ordering.natural().nullsLast().isOrdered(list);
Кроме того, поскольку вы упомянули, что хотели бы иметь возможность проверять как обратный порядок, так и обычный, это будет сделано как:
Ordering.natural().reverse().isOrdered(list);
Пользователи Java 8 : вместо этого используйте эквивалент Comparators#isInOrder(Iterable)
, поскольку остальная часть Ordering в основном устарела (как объяснено в классе документация ).