Rimuovi i duplicati dall'array in Java

Lovey Arora 12 ottobre 2023
  1. Utilizzare un array temporaneo per rimuovere i duplicati da un array in Java
  2. Utilizzare un indice separato per rimuovere i duplicati da un array in Java
  3. Utilizzare il metodo Arrays.sort() per rimuovere i duplicati da un array in Java
Rimuovi i duplicati dall'array in Java

Un array è una raccolta in grado di memorizzare elementi di tipo simile con la loro posizione di memoria fissa assegnata loro. Un array consente anche di memorizzare valori duplicati.

Questo tutorial dimostrerà come rimuovere in modo efficiente i duplicati da un array in Java in diversi modi.

Utilizzare un array temporaneo per rimuovere i duplicati da un array in Java

In questo metodo, il punto principale è attraversare l’array di input e quindi copiare gli elementi univoci dall’array originale in un array temporaneo. Per ottenere ciò, utilizzeremo il cicli for e l’istruzione if. Infine, gli elementi dell’array temporaneo vengono copiati nell’array originale e lo stampiamo.

Vedi il codice qui sotto.

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]+" ");  
    }  
}

Produzione:

56 77 78 98 

Nota che possiamo implementare il programma sopra solo su array ordinati.

Utilizzare un indice separato per rimuovere i duplicati da un array in Java

Qui, l’istruzione if viene utilizzata per verificare se l’elemento è uguale al suo elemento successivo. In caso contrario, quel particolare elemento viene aggiunto a qualche indice solo in quell’array simile. Questo viene fatto per mostrare che nell’array questo particolare elemento viene aggiunto solo una volta.

Questo metodo è applicabile anche solo se l’array è ordinato.

Lo implementiamo nel seguente frammento di codice.

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] + " ");
  }
}

Produzione:

11 24 37 44 47 56 

Utilizzare il metodo Arrays.sort() per rimuovere i duplicati da un array in Java

La funzione Arrays.sort() può ordinare gli array in Java. Questo metodo non viene utilizzato solo per Liste Collegate, Liste Array, ecc., Ma possiamo anche usarlo per tipi di dati primitivi.

La complessità del tempo e dello spazio non è fissa se usiamo questo metodo. Dipende totalmente dall’implementazione del codice.

Per esempio,

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] + " ");
  }
}

Produzione:

2 3 7 8 11

Come osservato, anche gli elementi duplicati dagli array non ordinati vengono rimossi allo stesso modo degli array ordinati. Ma qui, viene utilizzato un metodo aggiuntivo per ordinare l’array non ordinato.

Va notato che si dovrebbe verificare se l’array è ordinato o meno e quindi procedere con il passaggio successivo di rimozione dei duplicati.

Articolo correlato - Java Array