С помощью Iterable<T> легко:
T last = null;
for (T t : iterable) {
if (last != null && last.compareTo(t) > 0) {
return false;
}
last = t;
}
return true;
Но я не могу придумать простой способ сделать то же самое для Stream<T>, который избегает потребления всех элементов, когда это не нужно.