Comparator et chaînes de caractères
Bonjour,
Je cherche tout simplement à trier une liste contenant des objets Utilisateurs. Je tiens à les trier par leur noms de famille (String) et si ce champ n'est pas rempli par leur workspace (String). Voici le bout de code qui réalise cette action :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
/* (non-Javadoc)
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Object o1, Object o2) {
Utilisateur user1 = (Utilisateur) o1;
Utilisateur user2 = (Utilisateur) o2;
if ((user1.getLastName() != null) && (!user1.getLastName().equals("")) && (user2.getLastName() != null) && (!user2.getLastName().equals(""))) {
if (user1.getLastName().equals(user2.getLastName())) {
return user1.getWorkspace().compareTo(user2.getWorkspace());
}
else {
return user1.getLastName().compareTo(user2.getLastName());
}
}
else {
return user1.getWorkspace().compareTo(user2.getWorkspace());
}
} |
Mon problème est que les majuscules et les minuscules ne sont pas mélangés lors du tri. C'est à dire que l'utilisateur qui un nom avec une majuscule est situé avant dans la liste même si alphabétiquement il est logiquement après.
Merci
PS: désolé pour l'indentation