Перевернуть массив в Java

Узнайте, как перевернуть или инвертировать массив в Java. Перевернутый массив имеет тот же размер, что и исходный массив, и содержит те же элементы, но в обратном порядке.

String[] array = {"A", "B", "C", "D", "E"};String[] reveresedArray = {"E", "D", "C", "B", "A"};

1. API Collections.reverse()

Самый простой способ перевернуть массив — использовать существующие API, созданные именно для этой цели. Метод Collections.reverse() — это такой API. Этот метод переворачивает элементы в списке, поэтому мы должны сначала преобразовать массив в список с помощью java.util.Arrays.asList(array), а затем перевернуть список. Он также перевернет элементы резервного массива.

Обратите внимание, что метод reverse() меняет порядок элементов в исходном массиве на противоположный. Поэтому, если вы хотите сохранить исходный массив без изменений, рассмотрите возможность его клонирования в первую очередь.

Строка[] массив = {"A", "B", "C", "D", "E"};Коллекции.reverse(Массивы.asList(массив));System.out.println(Arrays.toString(array)); //[E, D, C, B, A]

Предупреждение: Обратите внимание, что API reverse() не работает с примитивными массивами, поскольку Arrays.asList(intArray) вернет List<int[]>, единственным элементом которого является исходный массив. Таким образом, нечего реверсировать.

 int[] массив = {1, 2, 3};Collections.reverse(Arrays.asList(array)); //Не переворачивает массив

2. Перестановка элементов массива в цикле For

Другой простой и понятный способ — пройтись по массиву, меняя местами элементы из начальной позиции с элементами из последней позиции.

Например, данное изображение описывает процесс обмена, где у нас есть массив из 5 элементов.

  • В первой итерации мы меняем местами первый и последний элементы.
  • Во второй итерации мы меняем местами второй и предпоследний элементы.
  • Та же перестановка происходит в цикле for, пока мы не достигнем середины массива; в этот момент массив перевернут.
Перевернуть массив в Java0
String[] array = {"A", "B", "C", "D", "E"};for(int i = 0; i < array.length / 2; i++) {String temp = array[i];array[i] = array[array.length - 1 - i];array[array.length - 1 - i] = temp;}System.out.println(Arrays.toString(array)); //[E, D, C, B, A]

3. Реверсирование массива с использованием Stream API

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

При таком подходе исходный массив остается неизменным.

final String[] arr = new String[]{"A","B","C","D","E"};Object[] reversedArr = IntStream.rangeClosed(1, array.length).mapToObj(i -> arr[arr.length - i]).toArray();System.out.println(Arrays.toString(reversedArr)); //[E, D, C, B, A]

4. ArrayUtils.reverse()

Если наше приложение уже зависит от библиотеки Apache Commons Lang, то у него есть превосходный и прямой API для реверсирования любого типа массива.

String[] array = {"A", "B", "C", "D", "E"};ArrayUtils.reverse(arr);System.out.println(Arrays.toString(arr)); //[E, D, C, B, A]

5. Заключение

В этом коротком уроке мы научились переворачивать массив, используя разные техники. Мы научились использовать цикл for, менять элементы местами, API коллекций, а также класс ArrayUtils от Apache Commons.

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

Исходный код на Github

Прокрутить вверх