Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menyusun Senarai Objek Secara Fleksibel mengikut Sifat Berbeza?

Bagaimanakah Saya Boleh Menyusun Senarai Objek Secara Fleksibel mengikut Sifat Berbeza?

Barbara Streisand
Barbara Streisandasal
2024-12-04 01:36:10543semak imbas

How Can I Flexibly Sort Lists of Objects by Different Properties?

Mengisih Koleksi Objek Dengan Mudah

Soalan:

Apabila bekerja dengan senarai objek (cth., Orang), bagaimana kita boleh mengisih mengikut perbezaan yang fleksibel sifat (cth., nama, umur, atau negara)?

Jawapan:

Walaupun antara muka Sebanding membenarkan pengisihan mengikut satu sifat, pendekatan yang lebih serba boleh ialah menggunakan pembanding tersuai dengan kaedah Collections.sort. Contoh untuk mengisih kelas Orang:

public class FlexiblePersonComparator implements Comparator<Person> {
    public enum Order { Name, Age, Country }

    private Order sortingBy = Order.Name;

    @Override
    public int compare(Person person1, Person person2) {
        switch (sortingBy) {
            case Name:
                return person1.name.compareTo(person2.name);
            case Age:
                return person1.age.compareTo(person2.age);
            case Country:
                return person1.country.compareTo(person2.country);
        }
        throw new RuntimeException("Practically unreachable code, can't be thrown");
    }

    public void setSortingBy(Order sortBy) {
        this.sortingBy = sortBy;
    }
}

Menggunakan pembanding:

public void sortPersonsBy(FlexiblePersonComparator.Order sortingBy) {
    List<Person> persons = this.persons;  // Useless line for clarification
    FlexiblePersonComparator comparator = new FlexiblePersonComparator();
    comparator.setSortingBy(sortingBy);
    Collections.sort(persons, comparator); // Sorting the list
}

Dengan menggunakan pembanding tersuai, anda mendapat fleksibiliti untuk mengisih koleksi objek mengikut mana-mana harta yang diingini, dengan menyediakan penyelesaian yang mudah dan serba boleh untuk menyusun struktur data yang kompleks.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Senarai Objek Secara Fleksibel mengikut Sifat Berbeza?. 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