Bagaimana untuk mencari elemen pendua dalam aliran di Java
Mencari elemen pendua dalam aliran data ialah salah satu soalan biasa dalam temu bual Java dan juga dalam banyak peperiksaan pelajar. Java menyediakan pelbagai kaedah untuk mencari elemen pendua Kami memberi tumpuan terutamanya pada dua kaedah: yang pertama ialah menggunakan Set Rangka Kerja Koleksi Java, dan yang lain adalah menggunakan kaedah terbina dalam Collections.Frequency() strim. .
Atur cara Java untuk mencari elemen pendua dalam strim
Sebelum membincangkan kaedah yang berbeza untuk mendapatkan pendua daripada pengumpulan data, adalah perlu untuk membincangkan kaedah penapis(). Ia akan menjadi bahagian penting dalam program sampel.
penapis()
Ia membolehkan kami menapis unsur-unsur aliran berdasarkan keadaan yang ditetapkan. Ia adalah sebahagian daripada fungsi tertib lebih tinggi yang menggunakan beberapa gelagat pada istilah aliran. Kaedah ini mengambil predikat sebagai parameter dan mengembalikan senarai elemen yang sepadan dengan predikat.
Tatabahasa
filter(predicate);
Penggunaan rangka kerja koleksi Java
Ia ialah sub-antaramuka Antara Muka Koleksi Java dan tidak membenarkan nilai pendua. Ia sangat serupa dengan set matematik. Kita boleh menggunakan kaedah add() yang hanya menambah elemen yang tidak serupa dengan set. Untuk menggunakan sifat antara muka Set, kita perlu menggunakan kelas HashSet yang melaksanakan antara muka ini.
Contoh
Contoh berikut menggambarkan cara menggunakan antara muka Set untuk mencari elemen pendua daripada strim.
Kaedah
Gunakan kaedah Arrays.asList() untuk mencipta senarai untuk menyimpan senarai saiz tetap.
Kemudian, gunakan kelas HashSet untuk menentukan Set untuk menyimpan elemen yang berbeza sahaja.
Sekarang, gunakan kaedah filter() bersama-sama dengan stream() dan forEach() untuk menapis item pendua sahaja. Di sini, stream() menentukan input dalam bentuk strim dan kami akan menggunakan forEach() untuk mengulang dan mencetak elemen berulang.
import java.util.*; public class Duplicate { public static void main(String []args) { // create a list with duplicate items List<Integer> itemsList = Arrays.asList(10, 12, 10, 33, 40, 40, 61, 61); // declaring a new Set Set<Integer> newitemSet = new HashSet<>(); System.out.println("The list of duplicate Items: "); itemsList.stream() // converting list to stream .filter(nums -> !newitemSet.add(nums)) // to filter out the elementsthat are not added to the set .forEach(System.out::println); // print the duplicates } }
Output
The list of duplicate Items: 10 40 61
Gunakan kaedah Collections.Frequency().
Satu lagi cara paling mudah untuk menapis elemen pendua daripada strim atau koleksi ialah menggunakan kaedah Collections.Frequency() bagi pakej "java.util", yang digunakan untuk mengembalikan jumlah bilangan elemen dalam koleksi yang ditentukan.
Tatabahasa
Collections.frequency(nameOfCollection, obj);
di sini,
nameOfCollection mewakili strim dan obj mewakili elemen yang kekerapannya perlu ditentukan.
Contoh
Dalam contoh di bawah, kami akan menggunakan kaedah Collections.Frequency() untuk mengira kejadian setiap elemen dalam strim dan kemudian mengembalikan elemen yang muncul lebih daripada sekali. Kami akan mencetak keseluruhan senarai kejadian elemen berulang bersama-sama dengan kiraan.
import java.util.*; public class FindDuplicates { public static void main(String[] args) { // create a list with duplicate items List<Integer> itemslist = Arrays.asList(10, 12, 10, 10, 33, 40, 40, 61, 61); System.out.println("The list of duplicate Items with frequency: "); itemslist.stream() // converting list to stream .filter(itr -> Collections.frequency(itemslist, itr) > 1) // checking the frequency of duplicate items .forEach(System.out::println); // printing the frequency of duplicate items System.out.println("Count of duplicate items: "); // to count the duplicate items System.out.println(itemslist.stream() .filter(itr -> Collections.frequency(itemslist, itr) > 1) .count()); } }
Output
The list of duplicate Items with frequency: 10 10 10 40 40 61 61 Count of duplicate items: 7
Contoh
Berikut ialah satu lagi contoh di mana kami akan menggunakan kedua-dua Set Interface dan Collections.Frequency() kaedah untuk mendapatkan elemen pendua sahaja. Kaedah Collections.Frequency() akan mengira kejadian setiap elemen dalam strim dan kemudian mengumpulkan elemen dengan kiraan lebih daripada 1 ke dalam Set untuk mengalih keluar pendua. Set yang terhasil hanya akan mengandungi elemen berulang daripada strim.
import java.util.stream.*; import java.util.*; public class FindDuplicates { public static void main(String[] args) { // create a list with duplicate items List<Integer> itemslist = Arrays.asList(10, 12, 10, 10, 33,40, 40, 61, 61); // set to store duplicate items Set<Integer> duplicates = itemslist.stream() .filter(itr -> Collections.frequency(itemslist, itr) > 1) // checking the frequency of duplicate items .collect(Collectors.toSet()); // adding only duplicate items to set // printing the duplicate items System.out.println("The list of duplicate Items:" + duplicates); } }
Output
The list of duplicate Items:[40, 10, 61]
Kesimpulan
Dalam bahagian ini, kami akan mengakhiri perbincangan kami dengan beberapa perkara penting daripada contoh dan konsep di atas. Kita boleh menggunakan kaedah penapis() untuk menapis jenis elemen tertentu daripada pengumpulan data. Ia berfungsi di belakang tabir dengan menggunakan predikat pada setiap elemen. Keupayaan Tetapkan Antara Muka untuk menyimpan hanya elemen yang berbeza menjadikannya pilihan yang sangat baik untuk tugasan tertentu.
Atas ialah kandungan terperinci Bagaimana untuk mencari elemen pendua dalam aliran di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.
