Eliminar duplicados de la matriz en Java

  1. Utilice una matriz temporal para eliminar duplicados de una matriz en Java
  2. Use un índice separado para eliminar duplicados de una matriz en Java
  3. Utilice el método Arrays.sort() para eliminar duplicados de una matriz en Java

Una matriz es una colección que puede almacenar elementos de tipos similares con su ubicación de memoria fija asignada. Una matriz también permite almacenar valores duplicados.

Este tutorial demostrará cómo eliminar de manera eficiente los duplicados de una matriz en Java de diferentes maneras.

Utilice una matriz temporal para eliminar duplicados de una matriz en Java

En este método, el punto principal es atravesar la matriz de entrada y luego copiar los elementos únicos de la matriz original a una matriz temporal. Para lograr esto, usaremos el bucle for y la instrucción if. Finalmente, los elementos de la matriz temporal se copian en la matriz original y la imprimimos.

Vea el código a continuación.

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

Producción:

56 77 78 98 

Tenga en cuenta que podemos implementar el programa anterior solo en matrices ordenadas.

Use un índice separado para eliminar duplicados de una matriz en Java

Aquí, la instrucción if se usa para verificar si el elemento es igual a su siguiente elemento. Si no es así, ese elemento en particular se agrega en algún índice en esa matriz similar solamente. Esto se hace para mostrar que en la matriz, este elemento en particular se agrega solo una vez.

Este método también es aplicable solo si la matriz está ordenada.

Implementamos esto en el siguiente fragmento 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] + " ");
    }
}

Producción:

11 24 37 44 47 56 

Utilice el método Arrays.sort() para eliminar duplicados de una matriz en Java

La función Arrays.sort() puede ordenar matrices en Java. Este método no solo se usa para Linked Lists, ArrayLists, etc., sino que también podemos usarlo para tipos de datos primitivos.

La complejidad del tiempo y el espacio no es fija si usamos este método. Depende totalmente de la implementación del código.

Por ejemplo,

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

Producción:

2 3 7 8 11

Como se observó, los elementos duplicados de las matrices no ordenadas también se eliminan de la misma manera que las matrices ordenadas. Pero aquí, se utiliza un método adicional para ordenar la matriz sin clasificar.

Cabe señalar que se debe verificar si la matriz está ordenada o no y luego continuar con el siguiente paso para eliminar los duplicados.

Artículo relacionado - Java Array

  • Cómo imprimir un array en Java
  • Convertir Array Int a Arraylist en Java