Remover duplicatas do array em Java

  1. Use um array temporário para remover duplicatas de um array em Java
  2. Use um índice separado para remover duplicatas de uma matriz em Java
  3. Use o método Arrays.sort() para remover duplicatas de uma matriz em Java

Uma matriz é uma coleção que pode armazenar elementos de tipos semelhantes com sua localização de memória fixa atribuída a eles. Uma matriz também permite armazenar valores duplicados.

Este tutorial demonstrará como remover duplicatas de maneira eficiente de um array em Java de diferentes maneiras.

Use um array temporário para remover duplicatas de um array em Java

Nesse método, o ponto principal é percorrer a matriz de entrada e, em seguida, copiar os elementos exclusivos da matriz original para uma matriz temporária. Para conseguir isso, usaremos o loop for e a instrução if. Finalmente, os elementos do array temporário são copiados para o array original e nós o imprimimos.

Veja o código abaixo.

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

Resultado:

56 77 78 98 

Observe que podemos implementar o programa acima apenas em matrizes classificadas.

Use um índice separado para remover duplicatas de uma matriz em Java

Aqui, a instrução if é usada para verificar se o elemento é igual ao próximo elemento. Se não, então, esse elemento específico é adicionado em algum índice nessa matriz semelhante apenas. Isso é feito para mostrar que, na matriz, esse elemento específico é adicionado apenas uma vez.

Este método também é aplicável apenas se a matriz for classificada.

Implementamos isso no seguinte trecho de código.


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

Resultado:

11 24 37 44 47 56 

Use o método Arrays.sort() para remover duplicatas de uma matriz em Java

A função Arrays.sort() pode classificar arrays em Java. Este método não é usado apenas para Linked Lists, ArrayLists, etc., mas também podemos usá-lo para tipos de dados primitivos.

A complexidade do tempo e do espaço não é fixa se usarmos este método. Depende totalmente da implementação do código.

Por exemplo,

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

Resultado:

2 3 7 8 11

Conforme observado, os elementos duplicados das matrizes não classificadas também são removidos da mesma maneira que as matrizes classificadas. Mas aqui, um método adicional é usado para classificar a matriz não classificada.

Deve-se observar que deve-se verificar se a matriz está classificada ou não e, em seguida, prosseguir com a próxima etapa de remoção das duplicatas.

Artigo relacionado - Java Array

  • Mudar um Array em Java
  • Como concatenar duas arraias em Java