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

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

Susan Sarandon
Susan Sarandonasal
2024-12-19 00:38:13680semak imbas

How to Sort a Java Array of Objects by Multiple Fields (Name then Age)?

Isih mengikut Pelbagai Medan dalam Java

Mengisih data ialah tugas biasa di Java, terutamanya apabila bekerja dengan objek kompleks. Apabila mengisih mengikut berbilang medan, susunan operasi menjadi penting. Mari kita pertimbangkan senario:

Cabaran:

Memandangkan tatasusunan objek Orang dengan umur dan nama atribut, bagaimana anda boleh mengisih tatasusunan ini mengikut abjad nama dan kemudian mengikut umur ? Algoritma apakah yang sesuai untuk tugasan ini?

Penyelesaian:

Untuk mengisih koleksi objek mengikut berbilang medan, Java menyediakan Collections.sort. Ini boleh dicapai menggunakan Comparator untuk menentukan logik pengisihan. Begini cara anda boleh melaksanakannya:

private static void order(List<Person> persons) {

    Collections.sort(persons, new Comparator() {

        public int compare(Object o1, Object o2) {

            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);

            if (sComp != 0) {
                return sComp;
            } 

            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
    }});
}

Algoritma pengisihan ini mula-mula membandingkan nama objek. Jika nama adalah sama, ia meneruskan untuk membandingkan umur mereka. Kaedah compareTo digunakan untuk kedua-dua rentetan dan perbandingan integer.

Algoritma:

Algoritma yang digunakan di sini ialah gabungan isihan gabungan dan isihan pantas. Collections.sort menggunakan varian Timsort, iaitu algoritma pengisihan hibrid yang cekap yang mengambil kesempatan daripada fakta bahawa tatasusunan diisih sebahagiannya mengikut nama.

Hasil:

Setelah melaksanakan kaedah pesanan, senarai objek Orang yang disediakan akan diisih mengikut abjad mengikut nama dan kemudian mengikut umur.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Java Objek mengikut Pelbagai Medan (Nama kemudian 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