Как инвертировать массив int/String в Java
В этом уроке мы рассмотрим, как инвертировать элементы массива в Java.
Обращение массива может показаться очень простым! Выглядит это так, потому что все, что вам нужно сделать, это создать таблицу того же размера, пройтись по исходной таблице от конца до начала и заполнить новую таблицу, и все! У вас был массив, элементы которого расположены в порядке, обратном порядку исходного массива, но проблема в том, что вы использовали здесь дополнительный массив, который будет занимать много места, если он очень большой и имеет сложность O(n). Представьте, что ваша доска содержит 1 миллион элементов, и вам не хватает места. Вопрос в том, можем ли мы перевернуть картину, не прибегая к дополнительной таблице, которая занимает много места? Ключом к решению здесь является понимание того, что вам нужно для инвертирования массива без использования временного буфера, но вы можете использовать переменную для хранения значений.
Вы также можете напрямую использовать библиотеки с открытым исходным кодом или методы java.util.Arrays или java.util.Collections.
Вернитесь к ручному методу перестановки элементов до тех пор, пока не достигнете midpoint, каждый раз сохраняя текущее значение во временной переменной, чтобы избежать его перезаписи следующим образом:
Обращение массива может показаться очень простым! Выглядит это так, потому что все, что вам нужно сделать, это создать таблицу того же размера, пройтись по исходной таблице от конца до начала и заполнить новую таблицу, и все! У вас был массив, элементы которого расположены в порядке, обратном порядку исходного массива, но проблема в том, что вы использовали здесь дополнительный массив, который будет занимать много места, если он очень большой и имеет сложность 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
pre>Почему мы останавливаемся на середине? Потому что, когда мы дойдем до середины, мы просто инвертируем все значения, и если вы продолжите до конца массива, вы инвертируете каждый элемент дважды, то результат будет таким же.Инвертировать массив в 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;Result:
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]);
}
}
}abc
12
54
c
99
массив инвертированных объектов
99
c
54
12
abc
pre>References:
Stackoverflow: Как перевернуть массив int в Java?
Commons lang: Java.lang API
Как перевернуть массив на месте в Java?