ホームページ > Java > &#&チュートリアル > Java 配列の重複排除: 5 つの一般的な方法の開始と習得

Java 配列の重複排除: 5 つの一般的な方法の開始と習得

PHPz
リリース: 2023-12-23 15:04:11
オリジナル
1326 人が閲覧しました

Java 配列の重複排除: 5 つの一般的な方法の開始と習得

初心者から熟練者まで: Java 配列から重複を削除する 5 つの一般的な方法

はじめに: Java 開発では、配列操作は最も一般的な操作の 1 つです。アレイの重複排除は、よく遭遇する問題の 1 つです。この記事では、Java 配列重複排除を実装するための 5 つの一般的な方法を紹介し、配列重複排除を始めてから習熟できるよう支援します。

1. Set コレクションを使用する
一般的な方法は、Set コレクションの特性を使用して配列の重複排除を実現することです。 Set コレクションは要素の重複を許可しないコレクションであるため、配列の要素を Set コレクションに入れると重複した要素が自動的に削除されます。

コード例:

import java.util.*;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用Set集合去重
        Set<Integer> set = new HashSet<>(Arrays.asList(array));
        
        // 去重后的数组
        Integer[] result = set.toArray(new Integer[0]);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}
ログイン後にコピー

2. ループ トラバーサルを使用する
もう 1 つの一般的な方法は、ループを使用して配列をトラバースし、要素が 1 つずつ繰り返されているかどうかを判断し、非反復要素を新しい配列に追加します。

コード例:

import java.util.Arrays;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 借助循环遍历去重
        Integer[] result = new Integer[array.length];
        int index = 0;
        for (Integer num : array) {
            boolean isDuplicate = false;
            for (int i = 0; i < index; i++) {
                if (num == result[i]) {
                    isDuplicate = true;
                    break;
                }
            }
            if (!isDuplicate) {
                result[index++] = num;
            }
        }
        
        // 去重后的数组
        result = Arrays.copyOf(result, index);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}
ログイン後にコピー

3. ストリーム フローの使用
Java 8 以降、コレクションと配列を簡単に処理できるストリーミング操作の概念が導入されました。重複した要素は、Stream ストリームの distinct() メソッドを使用して削除できます。

コード例:

import java.util.Arrays;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用Stream流去重
        Integer[] result = Arrays.stream(array).distinct().toArray(Integer[]::new);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}
ログイン後にコピー

4. HashMap の使用
HashMap を使用して配列の重複排除を実現することも一般的な方法です。配列を走査し、配列要素を Key として HashMap に入力します。重複した要素は上書きされ、最後に HashMap から Key を削除します。

コード例:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用HashMap去重
        Map<Integer, Integer> map = new HashMap<>();
        for (Integer num : array) {
            map.put(num, num);
        }
        Integer[] result = map.keySet().toArray(new Integer[0]);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
}
ログイン後にコピー

5. 再帰の使用
再帰は、配列の重複排除を実現するために使用できる高度なプログラミング手法です。各再帰では、配列の最初の要素と後続の要素が比較され、それらが同じ場合、再帰が終了するまで後続の要素が削除されます。

コード例:

import java.util.Arrays;

public class ArrayDuplicateRemover {
    public static void main(String[] args) {
        // 原始数组
        Integer[] array = {1, 2, 3, 4, 3, 2, 1};
        
        // 利用递归去重
        Integer[] result = removeDuplicates(array, array.length);
        
        // 打印结果
        System.out.println(Arrays.toString(result));
    }
    
    public static Integer[] removeDuplicates(Integer[] array, int length) {
        if (length == 1) {
            return array;
        }
        
        if (array[0] == array[length-1]) {
            return removeDuplicates(Arrays.copyOf(array, length-1), length-1);
        } else {
            return removeDuplicates(array, length-1);
        }
    }
}
ログイン後にコピー

結論: 上記の 5 つの一般的な方法を通じて、Java 配列の重複排除操作を簡単に実装できます。 Set コレクション、ループ トラバーサル、ストリーム フロー、ハッシュマップ、再帰のいずれを使用する場合でも、配列の重複排除のニーズをより適切に処理するのに役立ちます。この記事が、Java 配列の重複排除を始めてから習熟するまでに役立つことを願っています。

以上がJava 配列の重複排除: 5 つの一般的な方法の開始と習得の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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