Tôi muốn có chế độ xem danh sách đảo ngược trên danh sách (theo cách tương tự như List#sublist
cung cấp chế độ xem danh sách phụ trên danh sách). Có chức năng nào cung cấp chức năng này không?Làm thế nào để đảo ngược một danh sách trong Java?
Tôi không muốn tạo bất kỳ loại bản sao nào của danh sách cũng như không sửa đổi danh sách.
Sẽ đủ nếu tôi có thể nhận được ít nhất một trình lặp ngược lại trên danh sách trong trường hợp này.
Ngoài ra, tôi biết cách tự thực hiện việc này. Tôi chỉ hỏi nếu Java đã cung cấp một cái gì đó như thế này.
Demo thực hiện:
static <T> Iterable<T> iterableReverseList(final List<T> l) {
return new Iterable<T>() {
public Iterator<T> iterator() {
return new Iterator<T>() {
ListIterator<T> listIter = l.listIterator(l.size());
public boolean hasNext() { return listIter.hasPrevious(); }
public T next() { return listIter.previous(); }
public void remove() { listIter.remove(); }
};
}
};
}
Tôi chỉ đã phát hiện ra rằng một số List
triển khai có descendingIterator()
đó là những gì tôi cần. Mặc dù không có triển khai chung như vậy cho List
. Đó là loại kỳ lạ bởi vì việc thực hiện tôi đã thấy trong LinkedList
là đủ chung để làm việc với bất kỳ List
.
Bạn có thể tạo danh sách theo thứ tự ngược lại để bắt đầu không? –
Có nó - java.uitl.List.listIterator (int) http://download.oracle.com/javase/6/docs/api/java/util/List.html#listIterator%28int%29 – TofuBeer