Рубрики
Без рубрики

Как удалить элементы массива в Java

В Java нет специальных методов для удаления элементов из массива. Мы можем выполнить итерацию по массиву и создать новый массив, пропустив элемент для удаления.

Автор оригинала: Pankaj Kumar.

Когда мы создаем массив в Java, мы указываем его тип данных и размер. Это используется JVM для выделения необходимой памяти для элементов массива. Нет никаких специальных методов для удаления элементов из массива.

1. Удаление элемента из массива с помощью цикла for

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

package com.journaldev.java;

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5};
        int[] arr_new = new int[arr.length-1];
        int j=3;
        for(int i=0, k=0;i

Код удаляет элемент с индексом 3. Этот метод просто копирует все элементы, кроме элемента с индексом 3, в новый массив.

2. Удаление элемента массива по его значению

В отличие от предыдущего случая, этот код удалит элемент на основе его значения. Это не будет работать с дубликатами, так как размер массива после удаления должен быть известен.

package com.journaldev.java;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5};
        int[] arr_new = new int[arr.length-1];
        int j=3;
        for(int i=0, k=0;i

Единственное различие между этим и предыдущим случаем заключается в том, что arr[i]!=j в условии if вместо i!=j .

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

Выполнение удаления на основе значения в случае дубликатов требует использования ArrayList. Поскольку ArrayList не требует, чтобы размер был указан заранее, он позволяет нам динамически расширяться.

package com.journaldev.java;

import java.util.ArrayList;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] arr = new int[]{1,3,3,4,5};
        ArrayList arr_new = new ArrayList<>();
        int j=3;
        for(int i=0;i

4. Перемещение элементов в одном массиве

Этот метод включает в себя перемещение элементов в одном и том же массиве. Смещение элементов заменяет элемент, подлежащий удалению, элементом следующего индекса.

package com.journaldev.java;
import java.util.Arrays;
public class Main {

    public static void main(String[] args) {
        int[] arr = new int[]{1,3,3,4,5};
        int j=3;
        System.out.println("Before deletion :" + Arrays.toString(arr));
        int count =0;
        for(int i = 0; i < arr.length; i++){
            if(arr[i] == j){
                count++;

                // shifting elements
                for(int k = i; k < arr.length - 1; k++){
                    arr[k] = arr[k+1];
                }
                i--;
               // break;
            }
        }

        System.out.print("After Deletion :" );
        for(int i = 0; i < arr.length-count; i++){
            System.out.print(" " + arr[i]);
        }
        System.out.println();
        System.out.println("Whole array :" + Arrays.toString(arr));

    }
}

Переменная Count указывает количество удаленных элементов. Эта переменная необходима для отслеживания индекса, до которого массив должен быть напечатан. Этот метод также устраняет дубликаты.

5. Удаление элементов из списка ArrayList

ArrayList поддерживается массивами. Удаление элемента в списке массивов происходит прямолинейно. Для этого требуется один простой вызов встроенной функции.

package com.journaldev.java;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {

    public static void main(String[] args) {
        int[] arr = new int[]{1,3,3,4,5};
        ArrayList arr_new = new ArrayList();
        for (int i : arr)
        {
            arr_new.add(i);
        }
        arr_new.remove(3);
        System.out.println("Before deletion :" + Arrays.toString(arr));
        System.out.println("After Deletion:" + arr_new);
    }
}

Вызов функции remove(i) удаляет элемент с индексом i. Удаление в списках массивов относительно проще по сравнению с массивами.

Вывод

Мы видели несколько примеров удаления элементов в массиве с использованием различных методов. Разница между удалением элемента в массиве и списком массивов явно очевидна. Если удаление должно выполняться снова и снова, то ArrayList следует использовать для использования встроенных функций. То же самое относится и к добавлению элементов в массив. ArrayList благодаря своей динамической природе обеспечивает более простые и менее громоздкие способы изменения массива.