Как получить перевернутый вид списка в списке на Java? - PullRequest
206 голосов
/ 18 октября 2010

Я хочу иметь перевернутое представление списка в списке (аналогично, чем List#sublist обеспечивает представление подсписка в списке).Есть ли какая-то функция, которая обеспечивает эту функциональность?

Я не хочу делать какие-либо копии списка или изменять список.

Было бы достаточно, если бы я мог получить хотя быв этом случае обратный итератор в списке.


Также я знаю, как реализовать это сам.Я просто спрашиваю, предоставляет ли Java что-то вроде этого.

Демонстрационная реализация:

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(); }                 
            };
        }
    };
}

Я только что обнаружил, что некоторые List реализации имеют descendingIterator(), которыйэто то, что мне нужноХотя нет общей реализации для List.Что довольно странно, потому что реализация, которую я видел в LinkedList, достаточно общая, чтобы работать с любыми List.

Ответы [ 12 ]

1 голос
/ 15 января 2013

Вы также можете сделать это:

static ArrayList<String> reverseReturn(ArrayList<String> alist)
{
   if(alist==null || alist.isEmpty())
   { 
       return null;
   }

   ArrayList<String> rlist = new ArrayList<>(alist);

   Collections.reverse(rlist);
   return rlist;
}
0 голосов
/ 05 сентября 2018

Используйте reverse(...) методы класса java.util.Collections.Передайте ваш список в качестве параметра, и ваш список будет перевернут.

Collections.reverse(list);
...