J'ai un tableau d'objets person (int age; String name;)
.
Comment trier ce tableau par ordre alphabétique par nom puis par âge ?
Quel algorithme utiliseriez-vous pour cela ?
J'ai un tableau d'objets person (int age; String name;)
.
Comment trier ce tableau par ordre alphabétique par nom puis par âge ?
Quel algorithme utiliseriez-vous pour cela ?
Utilisation de l'approche Java 8 Streams...
//Creates and sorts a stream (does not sort the original list)
persons.stream().sorted(Comparator.comparing(Person::getName).thenComparing(Person::getAge));
Et l'approche Java 8 Lambda...
//Sorts the original list Lambda style
persons.sort((p1, p2) -> {
if (p1.getName().compareTo(p2.getName()) == 0) {
return p1.getAge().compareTo(p2.getAge());
} else {
return p1.getName().compareTo(p2.getName());
}
});
Enfin...
//This is similar SYNTAX to the Streams above, but it sorts the original list!!
persons.sort(Comparator.comparing(Person::getName).thenComparing(Person::getAge));
Demandez à votre classe de personne d'implémenter Comparable<Person>
, puis implémentez la méthode compareTo, par exemple :
public int compareTo(Person o) {
int result = name.compareToIgnoreCase(o.name);
if(result==0) {
return Integer.valueOf(age).compareTo(o.age);
}
else {
return result;
}
}
Cela triera d'abord par nom (cas insensible) et ensuite par âge. Vous pouvez ensuite exécuter Arrays.sort()
ou Collections.sort()
sur la collection ou le tableau d'objets Personne.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.