Memahami Pembanding
Di Java, pembanding ialah antara muka yang menentukan cara objek harus dibandingkan untuk tujuan pengisihan. Melaksanakan pembanding membolehkan anda menentukan tingkah laku pengisihan tersuai yang menyimpang daripada susunan semula jadi yang disediakan oleh antara muka Setanding.
Analisis Ralat
Kod anda menghadapi pengecualian kerana anda' cuba mengisih ArrayList yang mengandungi objek Orang tanpa melaksanakan antara muka Sebanding atau Pembanding. Kaedah bandingkan dalam kelas Orang adalah tidak betul kerana ia sepatutnya membandingkan kejadian kelas Orang, bukan objek pembalut Integer.
Penyelesaian
Untuk menyelesaikan isu, anda boleh melaksanakan Comparator yang membandingkan objek Orang berdasarkan ID mereka, seperti berikut:
import java.util.Comparator; public class PeopleComparator implements Comparator<People> { @Override public int compare(People p1, People p2) { return p1.getId() - p2.getId(); } }
Dalam anda Kelas TestPeople, gunakan PeopleComparator untuk mengisih senarai peps:
import java.util.ArrayList; import java.util.Collections; public class TestPeople { public static void main(String[] args) { ArrayList<People> peps = new ArrayList<>(); peps.add(new People(123, "M", 14.25)); // ... Collections.sort(peps, new PeopleComparator()); for (People person : peps) { System.out.println(person); } } }
Pendekatan Alternatif
Java menyediakan cara alternatif untuk melaksanakan pengisihan tersuai menggunakan kelas Comparator, yang boleh diberikan terus kepada kaedah isihan tanpa memerlukan kelas yang berasingan. Contohnya:
Collections.sort(peps, new Comparator<People>() { @Override public int compare(People p1, People p2) { return p1.getId() - p2.getId(); } });
Selain itu, anda boleh menggunakan sintaks ungkapan lambda baharu (Java 8 ) untuk memudahkan pelaksanaan pembanding:
Collections.sort(peps, (p1, p2) -> p1.getId() - p2.getId());
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Senarai Objek Tersuai dengan Betul di Java Menggunakan Pembanding?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!