Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Membandingkan Dua Senarai dengan Cekap dalam Java dan Cari Elemen Biasa dan Unik?

Bagaimanakah Saya Boleh Membandingkan Dua Senarai dengan Cekap dalam Java dan Cari Elemen Biasa dan Unik?

DDD
DDDasal
2024-11-28 14:17:11858semak imbas

How Can I Efficiently Compare Two Lists in Java and Find Common and Unique Elements?

Membandingkan Dua Senarai dalam Java

Anda mempunyai dua set data yang ingin anda bandingkan untuk menentukan bilangan elemen yang mereka kongsi. Dengan mengandaikan ini bukan objek Java List, pertimbangkan pendekatan berikut:

Menggunakan ArrayList

Menggunakan ArrayList, anda boleh menggunakan kaedah retainAll. Kaedah ini hanya mengekalkan elemen dalam senarai pertama yang juga terdapat dalam senarai kedua. Contohnya:

import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;

public class ListComparison {
    public static void main(String[] args) {
        Collection<String> listOne = new ArrayList<>(Arrays.asList("milan", "dingo", "elpha", "hafil", "meat", "iga", "neeta.peeta"));
        Collection<String> listTwo = new ArrayList<>(Arrays.asList("hafil", "iga", "binga", "mike", "dingo"));

        listOne.retainAll(listTwo);
        System.out.println(listOne);
    }
}

Kod ini akan mencetak senarai elemen biasa antara listOne dan listTwo.

Menggunakan HashSet

Jika anda mahu untuk memasukkan nilai berulang (iaitu, elemen yang muncul beberapa kali dalam mana-mana senarai), anda boleh menggunakan HashSet dan bukannya ArrayList. HashSet tidak membenarkan pendua, jadi selepas perbandingan, anda boleh menggunakan kaedah removeAll untuk mengalih keluar elemen biasa daripada set gabungan elemen dalam kedua-dua senarai. Ini akan memberi anda senarai elemen bukan lazim yang unik:

import java.util.Collection;
import java.util.HashSet;
import java.util.Arrays;

public class ListComparison {
    public static void main(String[] args) {

        Collection<String> listOne = Arrays.asList("milan", "iga",
                "dingo", "iga",
                "elpha", "iga",
                "hafil", "iga",
                "meat", "iga",
                "neeta.peeta", "iga");

        Collection<String> listTwo = Arrays.asList("hafil",
                "iga",
                "binga",
                "mike",
                "dingo", "dingo", "dingo");

        Collection<String> similar = new HashSet<>(listOne);
        Collection<String> different = new HashSet<>();
        different.addAll(listOne);
        different.addAll(listTwo);

        similar.retainAll(listTwo);
        different.removeAll(similar);

        System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);
    }
}

Kod yang diubah suai ini akan mengeluarkan elemen yang serupa dan berbeza antara kedua-dua senarai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Dua Senarai dengan Cekap dalam Java dan Cari Elemen Biasa dan Unik?. 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