Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как развернуть список

Короткий ответ

Collections.reverse() разворачивает список на месте:

void main() {
    var numbers = new ArrayList<>(List.of(1, 2, 3, 4));
    Collections.reverse(numbers);
 
    IO.println(numbers);
}

Результат:

[4, 3, 2, 1]

Без изменения

С Java 21 reversed() возвращает развёрнутое представление списка, не меняя его. Работает и с неизменяемыми списками:

void main() {
    var days = List.of("Mon", "Tue", "Wed");
 
    IO.println(days.reversed());
    IO.println(days);
}

Результат:

[Wed, Tue, Mon]
[Mon, Tue, Wed]

Обход с конца

reversed() удобно использовать прямо в цикле:

void main() {
    var steps = List.of("start", "middle", "end");
    for (String step : steps.reversed()) {
        IO.println(step);
    }
}

Результат:

end
middle
start

Частая ошибка

Путать разворот с сортировкой по убыванию. reverse() просто меняет порядок на обратный, а не сортирует:

void main() {
    var numbers = new ArrayList<>(List.of(3, 1, 2));
 
    Collections.reverse(numbers);
    IO.println(numbers);
 
    numbers.sort(Comparator.reverseOrder());
    IO.println(numbers);
}

Результат:

[2, 1, 3]
[3, 2, 1]

Функции из этого ответа

  • Collections.reverse() — Разворачивает порядок элементов списка на месте.
  • List.reversed() — Возвращает список в обратном порядке, не копируя его.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.