Maison > Java > javaDidacticiel > Comment trier une liste d'objets personnalisés par plusieurs propriétés en Java ?

Comment trier une liste d'objets personnalisés par plusieurs propriétés en Java ?

Susan Sarandon
Libérer: 2024-11-30 13:31:11
original
233 Les gens l'ont consulté

How to Sort a List of Custom Objects by Multiple Properties in Java?

Comment trier une collection d'objets personnalisés par plusieurs propriétés

Collections.sort s'avère utile pour trier des types de données simples tels que des chaînes. Cependant, lorsqu'il s'agit d'objets personnalisés, le tri basé sur des propriétés spécifiques peut s'avérer difficile.

Considérez une classe Person avec des propriétés telles que le nom, l'âge et le pays. Pour trier une liste d'objets Personne, nous avons besoin d'une approche personnalisée.

Présentation de l'interface Comparator

La solution réside dans la mise en œuvre de l'interface Comparator, qui fournit une méthode de comparaison pour définir un ordre de tri. En remplaçant la méthode compare(), nous pouvons spécifier la logique de tri en fonction de la propriété souhaitée.

public class PersonComparator implements Comparator<Person> {

    // Define the sorting order as an enum
    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.getName().compareTo(person2.getName());
            case AGE:
                return person1.getAge().compareTo(person2.getAge());
            case COUNTRY:
                return person1.getCountry().compareTo(person2.getCountry());
            default:
                throw new RuntimeException("Invalid sorting order");
        }
    }

    // Method to set the sorting order
    public void setSortingBy(Order sortingBy) {
        this.sortingBy = sortingBy;
    }
}
Copier après la connexion

Utilisation du comparateur

Pour trier la personList par un propriété spécifique, nous pouvons créer une instance de PersonComparator et définir l'ordre de tri souhaité.

public void sortPersonList(Order sortingBy) {
    PersonComparator comparator = new PersonComparator();
    comparator.setSortingBy(sortingBy);
    Collections.sort(personList, comparator);
}
Copier après la connexion

En appelant le sortPersonList() avec l’ordre de tri approprié, nous pouvons obtenir une liste triée en fonction de la propriété spécifiée. Cette approche offre de la flexibilité et permet de trier selon plusieurs propriétés sans modifier la classe Person elle-même.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal