Вот метод, использующий Iterable
и Comparator
.
<T> boolean isSorted(Iterable<? extends T> iterable,
Comparator<? super T> comparator) {
T previous = null;
for (final T current : iterable) {
if (previous != null && comparator.compare(previous, current) > 0) {
return false;
}
previous = current;
}
return true;
}
И метод для Iterable
из Comparable
и флаг для упорядочения.
<T extends Comparable<? super T>> boolean isSorted(
Iterable<? extends T> iterable, boolean natural) {
return isSorted(iterable, natural ? naturalOrder() : reverseOrder());
}