Удаление дубликатов из массива в Java

  1. Использование временного массива для удаления дубликатов из массива в Java
  2. Использование отдельного индекса для удаления дубликатов из массива в Java
  3. Используйте метод Arrays.sort() для удаления дубликатов из массива в Java

Массив - это коллекция, в которой могут храниться элементы схожих типов с назначенным им фиксированным местоположением в памяти. Массив также позволяет хранить повторяющиеся значения.

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

Использование временного массива для удаления дубликатов из массива в Java

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

См. Код ниже.

public class Main{  
public static int remove_Duplicate_Elements(int arr[], int n){  
        if (n==0 || n==1){  
            return n;  
        }  
        int[] tempA = new int[n];  
        int j = 0;  
        for (int i=0; i<n-1; i++){  
            if (arr[i] != arr[i+1]){  
                tempA[j++] = arr[i];  
            }  
         }  
        tempA[j++] = arr[n-1];       
        for (int i=0; i<j; i++){  
            arr[i] = tempA[i];  
        }  
        return j;  
    }  
       
    public static void main (String[] args) {  
        int arr[] = {56,56,77,78,78,98,98};  
        int length = arr.length;  
        length = remove_Duplicate_Elements(arr, length);    
        for (int i=0; i<length; i++)  
           System.out.print(arr[i]+" ");  
    }  
}

Выход:

56 77 78 98 

Обратите внимание, что мы можем реализовать указанную выше программу только на отсортированных массивах.

Использование отдельного индекса для удаления дубликатов из массива в Java

Здесь оператор if используется для проверки, равен ли элемент своему следующему элементу. Если нет, то этот конкретный элемент добавляется только по некоторому индексу в этом аналогичном массиве. Это сделано для того, чтобы показать, что в массив этот конкретный элемент добавляется только один раз.

Этот метод также применим только в том случае, если массив отсортирован.

Мы реализуем это в следующем фрагменте кода.


public class Main {
    public static int remove_Duplicates(int a[], int n)
    {
        if (n == 0 || n == 1) {
            return n;
        }

        int j = 0;

        
        for (int i = 0; i < n - 1; i++) {
            if (a[i] != a[i + 1]) {
                a[j++] = a[i];
            }
        }

        a[j++] = a[n - 1];

        return j;
    }

    public static void main(String[] args)
    {
        int a[] = { 11, 24, 24, 37, 37, 44, 47, 47, 56, 56};

        int n = a.length;
        
        int j=0;
        
        j = remove_Duplicates(a, n);

        
        for (int i = 0; i < j; i++)
            System.out.print(a[i] + " ");
    }
}

Выход:

11 24 37 44 47 56 

Используйте метод Arrays.sort() для удаления дубликатов из массива в Java

Функция Arrays.sort() умеет сортировать массивы в Java. Этот метод используется не только для связанных списков, списков массивов и т. Д., Но мы также можем использовать его для примитивных типов данных.

Если мы используем этот метод, временная и пространственная сложность не фиксируется. Это полностью зависит от реализации кода.

Например,

import java.util.Arrays;  
public class Main{  
public static int remove_Duplicate_Elements(int arr[], int n){  
        if (n==0 || n==1){  
            return n;  
        }  
        int[] tempA = new int[n];  
        int j = 0;  
        for (int i=0; i<n-1; i++){  
            if (arr[i] != arr[i+1]){  
                tempA[j++] = arr[i];  
            }  
         }  
        tempA[j++] = arr[n-1];      
        for (int i=0; i<j; i++){  
            arr[i] = tempA[i];  
        }  
        return j;  
    }  
       
    public static void main (String[] args) {  
        int arr[] = {11,7,2,2,7,8,8,8,3}; 
        Arrays.sort(arr); 
        int length = arr.length;  
        length = remove_Duplicate_Elements(arr, length);   
        for (int i=0; i<length; i++)  
           System.out.print(arr[i]+" ");  
    }
}

Выход:

2 3 7 8 11

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

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

Сопутствующая статья - Java Array

  • Заполнить массив в Java
  • Изменение размера массива с сохранением текущих элементов в Java
  • Сдвиг массива в Java