Eliminar duplicados del array en Java

Lovey Arora 12 octubre 2023
  1. Utilice un array temporal para eliminar duplicados de un array en Java
  2. Use un índice separado para eliminar duplicados de un array en Java
  3. Utilice el método Arrays.sort() para eliminar duplicados de un array en Java
Eliminar duplicados del array en Java

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

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

Utilice un array temporal para eliminar duplicados de un array en Java

En este método, el punto principal es atravesar el array de entrada y luego copiar los elementos únicos del array original a un array temporal. Para lograr esto, usaremos el bucle for y la instrucción if. Finalmente, los elementos del array temporal se copian en el array 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 un array 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 el array, este elemento en particular se agrega solo una vez.

Este método también es aplicable solo si el array 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 un array 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 los arrays no ordenadas también se eliminan de la misma manera que los arrays ordenadas. Pero aquí, se utiliza un método adicional para ordenar el array sin clasificar.

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

Artículo relacionado - Java Array