Rumah Java javaTutorial Penyahduaan tatasusunan Java: Bermula dan menguasai lima kaedah biasa

Penyahduaan tatasusunan Java: Bermula dan menguasai lima kaedah biasa

Dec 23, 2023 pm 03:04 PM
deduplikasi tatasusunan java

Penyahduaan tatasusunan Java: Bermula dan menguasai lima kaedah biasa

Dari Pemula hingga Penguasaan: Lima Cara Biasa untuk Menyahduplikasi Tatasusunan Java

Pengenalan: Dalam pembangunan Java, operasi tatasusunan adalah salah satu operasi yang paling biasa. Deduplikasi tatasusunan adalah salah satu masalah yang sering dihadapi. Dalam artikel ini, kami akan memperkenalkan lima cara biasa untuk melaksanakan penyahduplikasi tatasusunan Java untuk membantu anda bermula daripada menjadi mahir dalam penyahduplikasian tatasusunan.

1. Gunakan koleksi Set
Cara biasa ialah menggunakan ciri koleksi Set untuk mencapai penyahduplikasian tatasusunan. Koleksi set ialah koleksi yang tidak membenarkan elemen pendua, jadi meletakkan elemen tatasusunan ke dalam koleksi Set akan mengalih keluar elemen pendua secara automatik.

Contoh kod:

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));
    }
}
Salin selepas log masuk

2. Gunakan gelung traversal
Satu lagi cara biasa ialah menggunakan gelung untuk merentasi tatasusunan, tentukan sama ada elemen diulang satu demi satu dan meletakkan elemen tidak berulang ke dalam tatasusunan baharu.

Contoh kod:

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));
    }
}
Salin selepas log masuk

3 Menggunakan Strim
Selepas Java 8, konsep operasi penstriman diperkenalkan, yang boleh mengendalikan koleksi dan tatasusunan dengan mudah. Elemen pendua boleh dialih keluar menggunakan kaedah distinct() bagi aliran Strim.

Contoh kod:

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));
    }
}
Salin selepas log masuk

4 Gunakan HashMap
Menggunakan HashMap untuk mencapai penyahduplikasi tatasusunan juga merupakan cara biasa. Lintas tatasusunan, letakkan elemen tatasusunan sebagai Kunci ke dalam HashMap, elemen pendua akan ditimpa dan akhirnya keluarkan Kunci daripada HashMap.

Contoh kod:

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));
    }
}
Salin selepas log masuk

5. Gunakan rekursi
Rekursi ialah teknik pengaturcaraan lanjutan yang boleh digunakan untuk mencapai penyahduplikasi tatasusunan. Setiap rekursi membandingkan elemen pertama tatasusunan dengan elemen berikut Jika ia adalah sama, elemen berikut dialih keluar sehingga rekursi tamat.

Contoh kod:

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);
        }
    }
}
Salin selepas log masuk

Kesimpulan: Melalui lima kaedah biasa di atas, kami boleh melaksanakan operasi penyahduplikasi tatasusunan Java dengan mudah. Sama ada kami menggunakan koleksi Set, traversal gelung, Aliran Strim, HashMap atau rekursi, ini boleh membantu kami mengendalikan keperluan penyahduplikasi tatasusunan dengan lebih baik. Saya harap artikel ini dapat membantu anda daripada mula menjadi mahir dalam deduplikasi tatasusunan Java.

Atas ialah kandungan terperinci Penyahduaan tatasusunan Java: Bermula dan menguasai lima kaedah biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Mar 17, 2025 pm 05:35 PM

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Mar 17, 2025 pm 05:46 PM

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?

Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java? Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java? Mar 11, 2025 pm 05:51 PM

Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Mar 07, 2025 pm 06:12 PM

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Iceberg: Masa Depan Jadual Data Tasik Iceberg: Masa Depan Jadual Data Tasik Mar 07, 2025 pm 06:31 PM

Iceberg: Masa Depan Jadual Data Tasik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Mar 17, 2025 pm 05:43 PM

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Mar 17, 2025 pm 05:44 PM

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?

See all articles