super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 2011
-
7 mars 2006 à 11:52
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 2011
-
13 mars 2006 à 13:47
Bonjour,
voila, j galere depuis ce matin à essayer de trier un TreeSet.
je m expliquue : normalement un TreeSet est toujours trié mais qd on modifie un de ses objets (ce qui peut changer l ordre du tri) ben il se met pas a jour.
J ai essayer de trouver des fct avec Collection de sun ou encore CollectionUtils d apache mais rien.
Ca m etonne qd mm qu en ayant un comparator j soit pas foutu de trier ce truc !!
bref si qqun a une idée j lui en serait tres reconnaissant
(j ai parié un coup a boire que c t faisable)
Merci
++ Toinou
PS: il me faut une fct qui ne change pas l implémentation de mon objet, je dois pas recreer une List puis la trier puis creer un TreeSet!!
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 8 mars 2006 à 16:28
Salut,
le tri est effectué lors des opérations d'ajout ou de suppression, c'est donc normal que ton TreeSet ne se mette pas à jour quand tu modifies un objet.
Il n'y a pas d'évenement lancé lors de la modification d'un objet, donc le treeset ne refera pas le tri tout seul.
La seule solution sans devoir re-trier la liste est que les données que tu modifies n'entrent pas en compte lors du calcul de la clé des objets (les attributs utilisés par le comparator).
Soit tu trouves une clé qui ne bouge pas quelle soit les modifs que tu fais sur tes objets, soit tu tris de temps en temps.
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 9 mars 2006 à 12:04
ca j avais bien comprit mais ma question c etait plutot est ce que tu connais une méthode pour trier des Set ?? j en ai cherché partout et ca ne marche que sur des list et po des collections (c normal parce qu elle sont pas ordonnées)
il n empeche, je m etonne qu en pouvant récup un comparator de mon treeset je soit pas capable d avoir une méthode simple genre CollectionsUtils.sort(treeset,comparator) qui soit déjà codée
si tu t a déja croisé ce pb j suis preneur!!!
merci
++ Toinou
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 9 mars 2006 à 13:38
j'ai pas rencontré le pb mais je ferais simplement :
TreeSet courant=...
...
TreeSet nouveauTrie=new TreeSet(courant.comparator());//ou référence sur le comparator, ou référence static, mais on évite la création d'un nouveau comparator
nouveauTrie.addAll(courant);
courant=null; //supprimer de la mémoire
On ne peut pas retrier le treeset car il n'y a pas à proprement parler de tri (les éléments sont placés au bon endroit), c'est juste l'iterator qui nous donne les éléments dans l'ordre du comparator.
Pour refaire le placement, je vois pas d'autre solution que de recréer un nouveau treeset à partir de l'ancien. C'est pas forcément optimable mais avec l'api actuelle, je sais pas faire autrement.
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 9 mars 2006 à 16:28
j y ai pensé mais j peux pas parce que j ai un objet qui hérite de treeset avec des trucs en + donc résultat si je faisait ca je perdrait ttes mes données spécifiques !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 13 mars 2006 à 13:47
mouais et je présume que tes données spécifiques dépendent de ce que tu as mis dans ton treeset ?
A moins de copier toutes les données spécifique dans le nouvel objet, j'ai pas de solution :(