Как инвертировать массив int/String в Java

В этом уроке мы рассмотрим, как инвертировать элементы массива в Java.

Обращение массива может показаться очень простым! Выглядит это так, потому что все, что вам нужно сделать, это создать таблицу того же размера, пройтись по исходной таблице от конца до начала и заполнить новую таблицу, и все! У вас был массив, элементы которого расположены в порядке, обратном порядку исходного массива, но проблема в том, что вы использовали здесь дополнительный массив, который будет занимать много места, если он очень большой и имеет сложность O(n). Представьте, что ваша доска содержит 1 миллион элементов, и вам не хватает места. Вопрос в том, можем ли мы перевернуть картину, не прибегая к дополнительной таблице, которая занимает много места? Ключом к решению здесь является понимание того, что вам нужно для инвертирования массива без использования временного буфера, но вы можете использовать переменную для хранения значений.

Вы также можете напрямую использовать библиотеки с открытым исходным кодом или методы java.util.Arrays или java.util.Collections.

Вернитесь к ручному методу перестановки элементов до тех пор, пока не достигнете midpoint, каждый раз сохраняя текущее значение во временной переменной, чтобы избежать его перезаписи следующим образом:

public class reverse_Array {

public static void main(String[] args) {
int[] array ={1, 2, 3, 4};

//выводим целые числа массива
for(int i = 0; i < array.length; i++)
{
System.out.println(array[i]);
}
//инвертировать элементы массива
for(int i = 0; i < array.length / 2; i++)
{
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
//выводим целые числа инвертированного массива
System.out.println("инвертированный массив");
for(int i = 0; i < array.length; i++)
{
System.out.println(array[i]);
}
}
}
В результате компиляции и выполнения этого кода получается следующее:

1
2
3
4
array
4
3
2
1
Почему мы останавливаемся на середине? Потому что, когда мы дойдем до середины, мы просто инвертируем все значения, и если вы продолжите до конца массива, вы инвертируете каждый элемент дважды, то результат будет таким же.

Инвертировать массив в Java с помощью метода ArraysUtils.reverse()

Используя библиотеку Java lang Commons, API java.lang содержит такие методы, как для манипулирования строками, числовые методы... Нажмите, чтобы download java.lang  и импортируйте его в свой проект.

Вы можете легко использовать метод  ArrayUtils.reverse(int[] array)

import java.util.Arrays; 
import org.apache.commons.lang3.ArrayUtils;

public class reverse_array_strings {

public static void main(String[] args) {
String[] string_array ={"a", "b", "c"};

//выводим массив strings
for(int i = 0; i < string_array.length; i++)
{
System.out.println(string_array[i]);
}
//инвертировать элементы массива
ArrayUtils.reverse(string_array);

//выводим строки инвертированного массива
System.out.println("инвертированный массив");
for(int i = 0; i < string_array.length; i++)
{
System.out.println(string_array[i]);
}
}
}
Вот что выдает этот код на выходе:

a
b
c
array
c
b
a
В большинстве случаев Проще и безопаснее использовать библиотеку, потому что она избавляет вас от ошибок и проверена ее редакторами.

используем метод Collections.reverse()

Этот метод работает только для java object collections, поэтому нам нужно преобразовать наш массив в java.util.List с помощью метода Arrays.asList(), затем вызовите метод Collections.reverse() и, наконец, преобразуем объект List в массив с помощью метода toArray().

import java.util.Arrays; 
import java.util.Collections;
import java.util.List;
public class reverse_array_list {
public static void main(String[] args) {
Object[] string_objects ={"abc", 12, 54, 'c', 99};

//выводим массив strings
for(int i = 0; i < string_objects.length; i++)
{
System.out.println(string_objects[i]);
}

//преобразуем массив в список List
< Объект> list = Arrays.asList(string_objects);
//инвертировать объекты в array
Collections.reverse(list);
//получаем массив из списка
string_objects = list.toArray();

//выводим строки инвертированного массива
System.out.println("инвертированный массив объектов");
for(int i = 0; i < string_objects.length; i++)
{
System.out.println(string_objects[i]);
}
}
}
Result:

abc
12
54
c
99
массив инвертированных объектов
99
c
54
12
abc
References:
Stackoverflow: Как перевернуть массив int в Java?
Commons lang: Java.lang API
Как перевернуть массив на месте в Java?