При работе с массивами в Java могут возникнуть ситуации, когда вам потребуется добавить элемент в начало массива. Хотя массивы имеют фиксированный размер, этого можно добиться, создав новый массив большего размера и скопировав существующие элементы. В этой статье мы рассмотрим шесть различных методов добавления элемента в начало массива, а также приведем примеры кода для каждого метода.
Метод 1: использование System.arraycopy()
// Existing array
int[] originalArray = {1, 2, 3, 4, 5};
int[] newArray = new int[originalArray.length + 1];
// Element to be added
int newElement = 0;
// Copy elements to the new array
System.arraycopy(originalArray, 0, newArray, 1, originalArray.length);
// Assign the new element at the head of the array
newArray[0] = newElement;
Метод 2. Использование цикла for
// Existing array
int[] originalArray = {1, 2, 3, 4, 5};
int[] newArray = new int[originalArray.length + 1];
// Element to be added
int newElement = 0;
// Shift the elements to the right
for (int i = 0; i < originalArray.length; i++) {
newArray[i + 1] = originalArray[i];
}
// Assign the new element at the head of the array
newArray[0] = newElement;
Метод 3: использование ArrayList
import java.util.ArrayList;
import java.util.List;
// Existing array
int[] originalArray = {1, 2, 3, 4, 5};
// Element to be added
int newElement = 0;
// Convert array to ArrayList
List<Integer> arrayList = new ArrayList<>();
for (int i : originalArray) {
arrayList.add(i);
}
// Add the new element at the head of the ArrayList
arrayList.add(0, newElement);
// Convert ArrayList back to array
int[] newArray = arrayList.stream().mapToInt(Integer::intValue).toArray();
Метод 4. Использование дека
import java.util.ArrayDeque;
import java.util.Deque;
// Existing array
int[] originalArray = {1, 2, 3, 4, 5};
// Element to be added
int newElement = 0;
// Convert array to Deque
Deque<Integer> deque = new ArrayDeque<>();
for (int i : originalArray) {
deque.add(i);
}
// Add the new element at the head of the Deque
deque.addFirst(newElement);
// Convert Deque back to array
int[] newArray = deque.stream().mapToInt(Integer::intValue).toArray();
Метод 5: использование Apache Commons Lang
import org.apache.commons.lang3.ArrayUtils;
// Existing array
int[] originalArray = {1, 2, 3, 4, 5};
// Element to be added
int newElement = 0;
// Add the new element at the head of the array
int[] newArray = ArrayUtils.insert(0, originalArray, newElement);
Метод 6: использование потоков Java 8
import java.util.Arrays;
// Existing array
int[] originalArray = {1, 2, 3, 4, 5};
// Element to be added
int newElement = 0;
// Create a new array with the new element at the head
int[] newArray = Arrays.stream(originalArray).collect(() -> new int[originalArray.length + 1],
(arr, val) -> {
System.arraycopy(arr, 0, arr, 1, arr.length - 1);
arr[0] = newElement;
}, (arr1, arr2) -> System.arraycopy(arr2, 0, arr1, 0, arr2.length));
В этой статье мы рассмотрели шесть различных методов добавления элемента в начало массива в Java. Каждый метод имеет свои преимущества и может использоваться в зависимости от ваших конкретных требований. Используя эти методы, вы можете эффективно манипулировать массивами и с легкостью выполнять вставки в начало.