用 Java 從陣列中刪除重複項

Lovey Arora 2023年1月30日 2021年7月3日
  1. 在 Java 中使用臨時陣列從陣列中刪除重複項
  2. 在 Java 中使用單獨的索引從陣列中刪除重複項
  3. 在 Java 中使用 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 

在 Java 中使用 Arrays.sort() 方法從陣列中刪除重複項

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