, List . List ListIterator, hasPrevious() previous(). , , .
, Iterable a ListIterator :
static <T> Iterable<T> descendingIterable(List<? extends T> list) {
return () -> {
ListIterator<? extends T> li = list.listIterator(list.size());
return new Iterator<T>() {
public boolean hasNext() { return li.hasPrevious(); }
public T next() { return li.previous(); }
};
};
}
:
List<String> list = Arrays.asList("Hello", "2", "Chocolate", "10");
StringJoiner sj = new StringJoiner(" ");
descendingIterable(list).iterator().forEachRemaining(sj::add);
System.out.println(sj);
10 Chocolate 2 Hello
:
for (String s : descendingIterable(list)) {
System.out.println(s);
}
10
Chocolate
2
Hello
Iterator Iterable, , .
, , , , List . :
list.listIterator(list.size())
, , CopyOnWriteArrayList, . . .