Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menyusun Senarai Objek Tersuai dengan Betul di Java Menggunakan Pembanding?

Bagaimanakah Saya Boleh Menyusun Senarai Objek Tersuai dengan Betul di Java Menggunakan Pembanding?

DDD
DDDasal
2024-12-25 06:16:09546semak imbas

How Can I Correctly Sort a List of Custom Objects in Java Using Comparators?

Menggunakan Pembanding untuk Mengisih Objek dalam Java

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!

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