Trier une collection<objet> [Résolu]

cs_byob 35 Messages postés vendredi 27 janvier 2006Date d'inscription 15 décembre 2008 Dernière intervention - 10 juil. 2008 à 08:54 - Dernière réponse : indiana_jules 750 Messages postés mardi 9 mars 2004Date d'inscription 23 décembre 2008 Dernière intervention
- 10 juil. 2008 à 15:34
Bonjour, j'aimerais savoir comment on trie une collection d'objet:

J'ai fait:
Collection<Vhosts> listVhosts;
Collections.sort(listVhosts, new BeanComparator("fqdn", new NullComparator()));

mais Collections.sort(...) c'est pour les listes donc je ne sais pas trop comment faire,
merci pour votre aide!
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
indiana_jules 750 Messages postés mardi 9 mars 2004Date d'inscription 23 décembre 2008 Dernière intervention - 10 juil. 2008 à 12:02
3
Merci
Bonjour,
deux solutions
1) soit tu convertis ton tableau en List (List hérite de collections, donc pas trop de changement en théorie)
2) soit tu passes par une variable intermédiare: ArrayList<Vhosts> arr = new ArrayList<Vhosts>(listVhosts); //Tu as une liste

Aprés, cela dépend de ce que tu veux faire aprés le sort (affichage dans une fenêtre, trier et conserver les données ect...)

Voili voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte

Merci indiana_jules 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de indiana_jules
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 10 juil. 2008 à 12:30
0
Merci
Salut,

>> mais Collections.sort(...) c'est pour les listes

Non c'est pour les collections, sinon ça serait List.sort()

>> Collections.sort(listVhosts, new BeanComparator("fqdn", new NullComparator()));

Le comparateur que tu donnes en argument à sort() semble être une classe que tu utilise par défaut. Est-ce que cette classe est adaptée pour comparer les instances de ta liste de type Vhosts ? Sinon, la plupart des comparateurs par défaut font des comparaison sur les références des instances et non leur contenu. Il faut implémenter ta propre méthode de comparaison pour être certain que le tri se fait comme tu le souhaites.
Commenter la réponse de cs_AlexN
cs_byob 35 Messages postés vendredi 27 janvier 2006Date d'inscription 15 décembre 2008 Dernière intervention - 10 juil. 2008 à 13:05
0
Merci
merci indiana_jules j'ai utilisé la 2eme methode que tu m'as proposée et c'est nickel,
sinon AlexN il n'y a pas de soucis pour le comparateur, je compare en fonction de la variable fqdn, un champ de mon entity Vhosts.
Bin merci!
Commenter la réponse de cs_byob
cs_byob 35 Messages postés vendredi 27 janvier 2006Date d'inscription 15 décembre 2008 Dernière intervention - 10 juil. 2008 à 13:06
0
Merci
merci indiana_jules j'ai utilisé la 2eme methode que tu m'as proposée et c'est nickel,
sinon AlexN il n'y a pas de soucis pour le comparateur, je compare en fonction de la variable fqdn, un champ de mon entity Vhosts.
Bin merci!
Commenter la réponse de cs_byob
indiana_jules 750 Messages postés mardi 9 mars 2004Date d'inscription 23 décembre 2008 Dernière intervention - 10 juil. 2008 à 13:25
0
Merci
Y a pas de soucis.


AlexN >>>>>> mais Collections.sort(...) c'est pour les listes
>>>Non c'est pour les collections, sinon ça serait List.sort()

Si tu regardes la classe utilitaire Collections, tu pourras voir que java.util.Comparator) Sort demande bien en paramétre une liste : java.util.Comparator) sort(List<T> list, Comparator<? super T> c)


La classe utilitaire Lists n'existe pas, et les opérations pour les List se font bien dans Collections, certainnement pour éviter la redondance des opérations (vue que List implémente Collection)

Voili voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
Commenter la réponse de indiana_jules
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 10 juil. 2008 à 14:08
0
Merci
Yep, c'était un test, pour voir si tu suivais ;o)
Commenter la réponse de cs_AlexN
Commenter la réponse de indiana_jules

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.