Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Membandingkan Objek Java Dengan Cekap Menggunakan Pelbagai Medan?
Membandingkan Objek dengan Pelbagai Medan: Penyelesaian Komprehensif
Apabila membandingkan objek dengan berbilang medan setanding, seperti dalam contoh Orang yang disediakan, ia adalah penting untuk menentukan pendekatan terbaik untuk membolehkan perbandingan fleksibel tanpa menjejaskan kebolehbacaan kod dan kecekapan.
Java 8 memperkenalkan konsep pembanding, yang membolehkan pengisihan tersuai dan perbandingan objek. Menggunakan antara muka Pembanding, anda boleh merantai berbilang kriteria untuk perbandingan, dengan menyatakan susunan yang mereka harus dinilai. Kaedah thenComparing membolehkan anda menambah medan perbandingan tambahan.
Untuk kelas Orang, anda boleh mencipta pembanding seperti berikut:
Comparator.comparing((Person p) -> p.firstName) .thenComparing(p -> p.lastName) .thenComparingInt(p -> p.age);
Pembanding ini akan membandingkan individu dengan nama pertama, diikuti terlebih dahulu dengan nama keluarga, dan kemudian mengikut umur. Jika medan sebelumnya adalah sama, medan berikut akan dipertimbangkan untuk perbandingan.
Jika kelas menyediakan kaedah pengakses, anda boleh memudahkan penciptaan pembanding menggunakan rujukan kaedah:
Comparator.comparing(Person::getFirstName) .thenComparing(Person::getLastName) .thenComparingInt(Person::getAge);
Dengan menggunakan pendekatan ini, anda boleh membandingkan objek dengan cekap dengan berbilang medan, memberikan fleksibiliti dan kejelasan kod. Selain itu, jika kelas melaksanakan antara muka Sebanding, anda boleh menggunakan pembanding dalam kaedah compareTo:
@Override public int compareTo(Person o) { return Comparator.comparing(Person::getFirstName) .thenComparing(Person::getLastName) .thenComparingInt(Person::getAge) .compare(this, o); }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Objek Java Dengan Cekap Menggunakan Pelbagai Medan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!