Rumah >Java >javaTutorial >Bagaimana untuk Mengisih Objek Java mengikut Pelbagai Medan (Nama dan Umur)?

Bagaimana untuk Mengisih Objek Java mengikut Pelbagai Medan (Nama dan Umur)?

Susan Sarandon
Susan Sarandonasal
2024-12-15 19:58:16463semak imbas

How to Sort Java Objects by Multiple Fields (Name and Age)?

Mengisih Objek Java mengikut Pelbagai Medan: Nama dan Umur

Pertimbangkan tatasusunan objek Orang, setiap satu mengandungi umur integer dan nama String . Mengisih tatasusunan sedemikian mengikut abjad mengikut nama dan kemudian mengikut umur memerlukan algoritma pengisihan tersuai.

Menggunakan Collections.sort

Pustaka Java Collections menyediakan kaedah isihan terbina dalam anda boleh memanfaatkan:

private static void order(List<Person> persons) {
    Collections.sort(persons, new Comparator<>() {
        @Override
        public int compare(Object o1, Object o2) {
            // Compare by name (lexicographically)
            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);
            // If names are different, return result
            if (sComp != 0) {
                return sComp;
            }
            // If names are equal, compare by age
            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
        }
    });
}

Proses Aliran

  1. Sebutkan Pembanding dengan melaksanakan kaedah bandingkan.
  2. Bandingkan nama dua objek (secara leksografi). Jika berbeza, kembalikan hasilnya.
  3. Jika nama adalah sama, bandingkan umur dan kembalikan hasilnya.

Dengan menggunakan Collections.sort dengan Pembanding tersuai ini, anda boleh mengisih tatasusunan objek Orang dalam susunan nama menaik, diikuti dengan susunan umur menaik.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Objek Java mengikut Pelbagai Medan (Nama dan Umur)?. 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