Как убрать элемент из массива на java?

Пользователь

от jerad.kuphal , в категории: Java , 2 года назад

Как убрать элемент из массива на java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kennedi_pfeffer , год назад

@jerad.kuphal 

В Java есть несколько способов удалить элемент из массива:

  1. С использованием копирования оставшихся элементов:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
int[] arr = {1, 2, 3, 4, 5};
int index = 2;

// создаем новый массив с размером на единицу меньше
int[] newArr = new int[arr.length - 1];

// копируем все элементы до удаляемого
System.arraycopy(arr, 0, newArr, 0, index);

// копируем все элементы после удаляемого
System.arraycopy(arr, index + 1, newArr, index, arr.length - index - 1);

arr = newArr;


  1. С использованием списка:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
int[] arr = {1, 2, 3, 4, 5};
int index = 2;

List<Integer> list = new ArrayList<>();
for (int i : arr) {
    list.add(i);
}

// удаляем элемент из списка
list.remove(index);

// копируем обратно в массив
arr = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
    arr[i] = list.get(i);
}


  1. С использованием библиотеки Apache Commons Lang:
1
2
3
4
int[] arr = {1, 2, 3, 4, 5};
int index = 2;

arr = ArrayUtils.remove(arr, index);


  1. С использованием библиотеки Guava:
1
2
3
4
5
6
int[] arr = {1, 2, 3, 4, 5};
int index = 2;

arr = Ints.toArray(Ints.asList(arr).stream()
                  .filter(i -> i != arr[index])
                  .collect(Collectors.toList()));


Выбор с

Пользователь

от otha_marks , год назад

@jerad.kuphal 

В Java можно убрать элемент из массива, создав новый массив без этого элемента. Для этого можно использовать цикл for для прохода по исходному массиву и копирования всех элементов, кроме удаляемого, в новый массив.


Например, если мы хотим удалить элемент из массива arr с индексом index, можно сделать следующее:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// Создаем новый массив на один элемент меньше
int[] newArr = new int[arr.length - 1];

// Копируем все элементы, кроме удаляемого
int j = 0;
for (int i = 0; i < arr.length; i++) {
    if (i != index) {
        newArr[j] = arr[i];
        j++;
    }
}

// Теперь newArr содержит все элементы из arr, кроме arr[index]


Если же вам нужно удалить элемент из списка (List), то можно воспользоваться методом remove():

1
2
3
4
5
6
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
int index = 2; // удаляем третий элемент (индекс 2)

list.remove(index); // удаляем элемент с указанным индексом

// Теперь list содержит элементы [1, 2, 4, 5]


Обратите внимание, что при удалении элемента из списка все индексы элементов после удаленного сдвигаются на одну позицию влево.