Encodera

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

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

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

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

Меняйте местами первый и последний элементы, двигаясь к середине:

void main() {
    int[] numbers = {1, 2, 3, 4, 5};
    for (int i = 0, j = numbers.length - 1; i < j; i++, j--) {
        int tmp = numbers[i];
        numbers[i] = numbers[j];
        numbers[j] = tmp;
    }
    IO.println(Arrays.toString(numbers));
}

Результат:

[5, 4, 3, 2, 1]

Массив объектов

Arrays.asList() даёт вид на массив, поэтому Collections.reverse() разворачивает сам массив:

void main() {
    String[] letters = {"a", "b", "c"};
    Collections.reverse(Arrays.asList(letters));
 
    IO.println(Arrays.toString(letters));
}

Результат:

[c, b, a]

Новый массив

Если исходный массив нужен без изменений, создайте развёрнутую копию через поток:

void main() {
    int[] numbers = {1, 2, 3};
    int[] reversed = IntStream.range(0, numbers.length)
            .map(i -> numbers[numbers.length - 1 - i])
            .toArray();
 
    IO.println(Arrays.toString(numbers));
    IO.println(Arrays.toString(reversed));
}

Результат:

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

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

Пройти цикл до конца массива вместо середины. Каждая пара меняется дважды, и массив возвращается к исходному порядку:

void main() {
    int[] numbers = {1, 2, 3, 4};
    for (int i = 0; i < numbers.length; i++) {
        int j = numbers.length - 1 - i;
        int tmp = numbers[i];
        numbers[i] = numbers[j];
        numbers[j] = tmp;
    }
    IO.println(Arrays.toString(numbers));
}

Результат:

[1, 2, 3, 4]

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

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

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

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