Cara menggunakan Comparable dan Comparator dalam Java
Sebanding dan Pembanding
Sebanding dan Pembanding ialah dua antara muka berkaitan pengisihan Java, juga dikenali sebagai pengisihan semula jadi dan pengisihan tersuai. Saya baru-baru ini membaca kandungan yang berkaitan, dan sekarang saya akan merekodkan status pembelajaran saya sendiri di bawah.
Comparable dan Comparator ialah dua antara muka tentang pengisihan, digunakan untuk melaksanakan fungsi pengisihan dalam koleksi Java. Fungsi khusus boleh didapati daripada API.
Setanding
Ini adalah pengenalan ringkas daripada dokumentasi API:
Antara muka ini mengenakan jumlah pesanan pada objek setiap kelas yang melaksanakannya. Susunan ini dirujuk sebagai susunan semula jadi kelas, dan kaedah compareTo kelas dirujuk sebagai kaedah perbandingan semula jadinya kerana objek ini kurang daripada, sama dengan atau lebih besar daripada objek yang ditentukan.
Penggunaan:
Pelaksanaan Comparable diperlukan untuk mengisih kelas entiti antara muka, dan mengatasi kaedah compareTo(), anda boleh mempunyai fungsi pengisihan. Sesetengah koleksi (seperti TreeSet) yang mengisih elemen secara automatik akan memanggil kaedah CompareTo() secara automatik untuk mengisih apabila elemen dimasukkan ke dalam koleksi (dengan syarat elemen mesti melaksanakan antara muka ini). Tetapi ia juga boleh digunakan di tempat lain, bukan sahaja terhad kepada TreeSet, ia digunakan secara meluas.
Komparator
Ini adalah pengenalan ringkas daripada dokumentasi API:
Fungsi perbandingan, yang mengenakan jumlah pesanan pada beberapa koleksi daripada objek. Pembanding boleh dihantar ke kaedah isihan (seperti Collections.sort atau Arrays.sort) untuk membenarkan kawalan yang tepat ke atas susunan isihan juga boleh digunakan untuk mengawal susunan struktur data tertentu (seperti set diisih atau peta diisih), atau untuk menyediakan pesanan untuk koleksi objek yang tidak mempunyai susunan semula jadi.
Penggunaan:
Pembanding ialah yang ketiga- antara muka parti , penggunaan khusus ialah: reka bentuk pembanding, cipta kelas, laksanakan antara muka ini dan ganti kaedah compare(). Dan memandangkan Comparator ialah antara muka berfungsi, ungkapan Lambda boleh digunakan dan bukannya objek Comparator, menjadikan kod lebih ringkas dan jelas.
Cakap murah, tunjukkan kodnya.
Nota: Kandungan dalam blog mungkin tidak begitu terperinci, jadi jika anda ingin melihat butiran khusus, anda harus merujuk kepada buku dan dokumen rasmi Terutamanya, kandungan di sini adalah lebih kepada memperkenalkan secara ringkas penggunaan asas.
Kelas entiti ujian: Anjing
public class Dog implements Comparable<Dog>{ private String name; private int age; public Dog(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Dog [name=" + name + ", age=" + age + "]"; } @Override public int compareTo(Dog dog) { return this.age > dog.age ? 1 : this.age < dog.age ? -1 : 0; } }
Kelas entiti ujian: Kucing
rreeeKelas ujian : Ujian
public class Cat implements Comparable<Cat>{ private String name; private Integer age; public Cat(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Cat [name=" + name + ", age=" + age + "]"; } @Override public int compareTo(Cat o) { //可以直接调用,这样更简单 //调换 o.age 和 this.age 就是相反的顺序 return o.age.compareTo(this.age); } }
Tangkapan skrin berjalan:
Arahan tambahan: list.sort()
Kaedah
Penerangan dalam dokumentasi API:
Isih senarai ini mengikut susunan yang diaruhkan oleh Pembanding yang ditentukan.
Semua elemen dalam senarai ini mestilah boleh dibandingkan dengan menggunakan pembanding yang ditentukan (iaitu, c .compare(e1, e2) tidak boleh membuang ClassCastException untuk mana-mana elemen e1 dan e2 dalam senarai Jika pembanding yang ditentukan adalah batal maka semua elemen dalam senarai ini mesti melaksanakan antara muka Sebanding dan susunan semula jadi elemen harus digunakan). . Senarai ini mesti boleh diubah suai, tetapi tidak perlu diubah saiznya.
Seperti yang anda lihat, kaedah ini mengisih melalui objek Comparator Jika parameter masuk adalah batal, pengisihan semula jadi akan dilakukan : prasyarat untuk pengisihan semula jadi ialah kelas entiti yang sepadan melaksanakan antara muka Sebanding dan mengatasi kaedah compareTo().
Atas ialah kandungan terperinci Cara menggunakan Comparable dan Comparator dalam 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 untuk Square Root di Java. Di sini kita membincangkan cara Square Root berfungsi di Java dengan contoh dan pelaksanaan kodnya masing-masing.

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 Nombor Armstrong di Jawa. Di sini kita membincangkan pengenalan kepada nombor Armstrong di java bersama-sama dengan beberapa kod.

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
