Как развернуть массив в Java
В этом уроке мы рассмотрим как перевернуть массив в Java, или по другому это называется реверс массива.
Существует массив {1, 2, 3, 4}
и его надо развернуть (или инвертировать) и получить массив {4, 3, 2, 1}
.
Находим середину массива - array.length / 2
. Перебираем элементы массива от начала до середины и одновременно меняем местами элементы с индексом i
и array.length - i - 1
. Для обмена значениями используем вариант с введением временной переменной, рассмотренный в предыдущем разделе:
public class ArrayInverter {
public static void invert(int[] array) {
for (int i = 0; i < array.length / 2; i++) {
int tmp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = tmp;
}
}
}
Обратите внимание, что в классе ArrayInverter
нет метода main()
- будем вызывать метод invert()
из другого класса. Для вызова метода, находящегося в другом классе, пишем имя класса - ArrayInverter.invert(array1)
:
import java.util.Arrays;
public class ArrayInverterExample1 {
public static void main(String[] args) {
int[] array1 = new int[]{};
System.out.print(Arrays.toString(array1) + " => ");
ArrayInverter.invert(array1);
System.out.println(Arrays.toString(array1));
array1 = new int[]{0};
System.out.print(Arrays.toString(array1) + " => ");
ArrayInverter.invert(array1);
System.out.println(Arrays.toString(array1));
array1 = new int[]{0, 1};
System.out.print(Arrays.toString(array1) + " => ");
ArrayInverter.invert(array1);
System.out.println(Arrays.toString(array1));
array1 = new int[]{0, 1, 2};
System.out.print(Arrays.toString(array1) + " => ");
ArrayInverter.invert(array1);
System.out.println(Arrays.toString(array1));
array1 = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.print(Arrays.toString(array1) + " => ");
ArrayInverter.invert(array1);
System.out.println(Arrays.toString(array1));
}
}
Если мы внимательно посмотрим на код в классе ArrayInverterExample1
, то увидим, что один блок кода повторяется пять раз. Дублирование кода - это плохая практика, поэтому вынесем повторяющийся код в отдельный метод, который будет вызываться пять раз с разными значениями:
import java.util.Arrays;
public class ArrayReverseExample {
public static void main(String[] args) {
testInvert(new int[]{});
testInvert(new int[]{0});
testInvert(new int[]{0, 1});
testInvert(new int[]{0, 1, 2, 3, 4});
}
private static void testInvert(int[] array) {
System.out.print(Arrays.toString(array) + " => ");
ArrayInverter.invert(array);
System.out.println(Arrays.toString(array));
}
}
Please log in or register to have a possibility to add comment.