ホームページ > Java > &#&チュートリアル > 5 つの古典的な Java 配列重複排除アルゴリズムの詳細な説明

5 つの古典的な Java 配列重複排除アルゴリズムの詳細な説明

WBOY
リリース: 2023-12-23 10:01:19
オリジナル
885 人が閲覧しました

5 つの古典的な Java 配列重複排除アルゴリズムの詳細な説明

5 つの古典的な Java 配列重複排除アルゴリズムの詳細な説明

Java プログラミングでは、配列に対して重複排除操作、つまり配列の削除を実行する必要がある状況によく遭遇します。内の重複要素は、一意の要素を保持します。以下では、5 つの古典的な Java 配列重複排除アルゴリズムを紹介し、対応するコード例を示します。

  1. HashSet の使用
    HashSet は、重複した要素を自動的に削除する Java のコレクション クラスであり、この機能を使用すると、配列の重複排除を迅速に実現できます。
    コード例:
import java.util.Arrays;
import java.util.HashSet;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        HashSet<Integer> set = new HashSet<>();
        for (int i : array) {
            set.add(i);
        }
        
        int[] result = new int[set.size()];
        int index = 0;
        for (int i : set) {
            result[index++] = i;
        }
        
        System.out.println(Arrays.toString(result));
    }
}
ログイン後にコピー
  1. TreeSet の使用
    TreeSet は、重複を自動的に削除して要素を並べ替える Java の順序付きコレクション クラスです。配列の重複排除は、配列内の要素を TreeSet に追加し、TreeSet を配列に変換することで実現できます。
    コード例:
import java.util.Arrays;
import java.util.TreeSet;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        TreeSet<Integer> set = new TreeSet<>();
        for (int i : array) {
            set.add(i);
        }
        
        Integer[] result = set.toArray(new Integer[0]);
        int[] deduplicatedArray = Arrays.stream(result).mapToInt(Integer::intValue).toArray();
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}
ログイン後にコピー
  1. ストリーム API の使用
    Java 8 以降で導入されたストリーム API を使用すると、配列の重複排除操作を簡素化できます。配列をストリームに変換するには、ストリームの個別のメソッドを使用して重複する要素を削除し、それを配列に変換します。
    コード例:
import java.util.Arrays;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        int[] deduplicatedArray = Arrays.stream(array).distinct().toArray();
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}
ログイン後にコピー
  1. 二重ループの使用
    二重ループは一般的な配列重複排除アルゴリズムです。隣接する要素を比較することにより、重複した要素は指定された不正な値に設定され、次に、不正な値の削除操作を実行します。
    コード例:
import java.util.Arrays;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i] != Integer.MIN_VALUE) {
                for (int j = i + 1; j < array.length; j++) {
                    if (array[i] == array[j]) {
                        array[j] = Integer.MIN_VALUE;
                    }
                }
            }
        }
        
        int count = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] != Integer.MIN_VALUE) {
                array[count++] = array[i];
            }
        }
        
        int[] deduplicatedArray = Arrays.copyOf(array, count);
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}
ログイン後にコピー
  1. HashMap の使用
    HashMap は Java のハッシュ テーブル構造であり、HashMap の put メソッドを使用して配列要素をキーとして挿入します。すでに存在する場合、重複した要素は自動的に削除されます。
    コード例:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class ArrayDeduplicateExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 2, 4, 3, 5};
        
        Map<Integer, Object> map = new HashMap<>();
        for (int i : array) {
            map.put(i, null);
        }
        
        int[] deduplicatedArray = new int[map.size()];
        int index = 0;
        for (int i : map.keySet()) {
            deduplicatedArray[index++] = i;
        }
        
        System.out.println(Arrays.toString(deduplicatedArray));
    }
}
ログイン後にコピー

上記は、5 つの古典的な Java 配列重複排除アルゴリズムの詳細な紹介とコード例です。実際のアプリケーションでは、特定の状況に応じて適切な重複排除アルゴリズムを選択すると、プログラムのパフォーマンスと可読性が向上します。

以上が5 つの古典的な Java 配列重複排除アルゴリズムの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート