Rumah  >  Artikel  >  Java  >  Mendedahkan Lima Kaedah Deduplikasi Tatasusunan Java yang Cekap

Mendedahkan Lima Kaedah Deduplikasi Tatasusunan Java yang Cekap

WBOY
WBOYasal
2023-12-23 14:46:101350semak imbas

Mendedahkan Lima Kaedah Deduplikasi Tatasusunan Java yang Cekap

Lima kaedah penduaan tatasusunan Java yang cekap didedahkan

Semasa proses pembangunan Java, kami sering menghadapi situasi di mana kami perlu menyahduplikasi tatasusunan. Penyahduplikasian adalah untuk mengalih keluar elemen pendua dalam tatasusunan dan menyimpan hanya satu. Artikel ini akan memperkenalkan lima kaedah penyahduplikasi tatasusunan Java yang cekap dan menyediakan contoh kod khusus.

Kaedah 1: Gunakan HashSet untuk mengalih keluar pendua

HashSet ialah koleksi tidak tertib, bukan pendua yang akan mengalih keluar pendua secara automatik apabila menambah elemen. Oleh itu, kita boleh menggunakan ciri-ciri HashSet untuk menyahduplikasi tatasusunan.

public static int[] removeDuplicates(int[] arr) {
    Set<Integer> set = new HashSet<>();
    for (int i = 0; i < arr.length; i++) {
        set.add(arr[i]);
    }
    int[] result = new int[set.size()];
    int index = 0;
    for (int num : set) {
        result[index++] = num;
    }
    return result;
}

Kaedah 2: Gunakan LinkedHashSet untuk mengekalkan susunan elemen tanpa pendua

LinkedHashSet ialah set bukan pendua tertib, yang akan diisih mengikut susunan sisipan elemen. Dengan menggunakan LinkedHashSet anda boleh mengalih keluar pendua dan mengekalkan susunan elemen.

public static int[] removeDuplicates(int[] arr) {
    Set<Integer> set = new LinkedHashSet<>();
    for (int i = 0; i < arr.length; i++) {
        set.add(arr[i]);
    }
    int[] result = new int[set.size()];
    int index = 0;
    for (int num : set) {
        result[index++] = num;
    }
    return result;
}

Kaedah 3: Gunakan API Strim untuk menyahduplikasi tatasusunan

Java 8 memperkenalkan API Strim, yang boleh menukar tatasusunan kepada strim melalui kaedah stream() dan kemudian melaksanakan penyahduplikasian melalui kaedah distinct().

import java.util.Arrays;
import java.util.stream.Collectors;

public static int[] removeDuplicates(int[] arr) {
    return Arrays.stream(arr).distinct().toArray();
}

Kaedah 4: Gunakan TreeSet untuk mengisih dan penyahduplikasi

TreeSet ialah set bukan pendua tertib yang menyusun elemen mengikut susunan semula jadinya. Tatasusunan boleh dinyahduplikasi dan diisih dengan menggunakan TreeSet.

public static int[] removeDuplicates(int[] arr) {
    Set<Integer> set = new TreeSet<>();
    for (int i = 0; i < arr.length; i++) {
        set.add(arr[i]);
    }
    int[] result = new int[set.size()];
    int index = 0;
    for (int num : set) {
        result[index++] = num;
    }
    return result;
}

Kaedah 5: Gunakan BitSet untuk penyahduplikasian

BitSet ialah koleksi yang digunakan untuk menyimpan nilai bit dan juga boleh digunakan untuk penyahduplikasian. Kita boleh mengalih keluar elemen pendua dengan menetapkan nilai bit yang sepadan kepada benar.

public static int[] removeDuplicates(int[] arr) {
    BitSet bitSet = new BitSet();
    for (int num : arr) {
        bitSet.set(num);
    }
    int[] result = new int[bitSet.cardinality()];
    int index = 0;
    for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet.nextSetBit(i + 1)) {
        result[index++] = i;
    }
    return result;
}

Di atas ialah lima kaedah penyahduplikasi tatasusunan Java yang cekap. Memilih kaedah yang sesuai mengikut situasi sebenar boleh memproses tatasusunan dengan lebih cekap semasa proses penyahduplikasian. Saya harap artikel ini akan membantu masalah deduplikasi tatasusunan anda dalam pembangunan Java!

Atas ialah kandungan terperinci Mendedahkan Lima Kaedah Deduplikasi Tatasusunan Java yang Cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn