Trier une liste avec SortedSet

Résolu
histl4000 Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   -  
histl4000 Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je dois trier une liste<Mot mot> avec un SortedSet et comme implémentation TreeSet. Je suis obligé d'utilisé cette collection avec cette implémentation.

public List<Mot> trierOrdreAlphabetique(List<Mot> mots) {
List<Mot> result = new ArrayList<Mot>();
SortedSet<Mot> trier = new TreeSet<Mot>();
for(int i =0; i < mots.size(); i++) {
trier.add(mots.get(i));
}

Iterator<String> it = trier.iterator(); // problème ici car ça ne marche qu'avec un String

while (it.hasNext()) {
String epm = it.next();
result.add(result); // problème ici aussi car un String ne peut pas être ajouter dans une list<Mot>
}
return result;

}


Je dois également respecter la valeur retourné c'est à dire que ça doit rester une collection List<Mot>. Est-ce qu'il y aurait moyen de le trier? Merci


A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

"problème ici car ça ne marche qu'avec un String"
Une Collection<E> donne un Iterator<E> donc si tu as une List<Mot> tu dois avoir un Iterator<Mot>

Remarque : dans 99% des cas, tu ne devrais jamais utiliser la classe Iterator, sauf à utiliser la méthode delete(), mais ce n'est pas ton cas.

Quant à ta méthode, elle peut s'écrire comme ceci :

public List<Mot> trierOrdreAlphabetique(List<Mot> mots) {
    return new ArrayList<>(new TreeSet<>(mots));
}

Attention : Mot doit implémenter l'interface Comparable<Mot> pour pouvoir être triée par un TreeSet, sinon il est nécessaire de construire le TreeSet avec un Comparator<Mot> et faire un addAll de la liste.
0
histl4000 Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   3
 
Je viens d'essayer votre méthode mais ça ne marche pas. En effet, lorsque j'écris "jack albert fred luca" le résultat est luca...
0
histl4000 Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   3
 
Je n'est qu'un string au final c'est assez bizarre
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > histl4000 Messages postés 129 Date d'inscription   Statut Membre Dernière intervention  
 
Si tu n'as qu'un String c'est parce que le TreeSet considère que tous tes mots sont égaux.

Comment as tu implémenté la méthode de comparaison ?
0
histl4000 Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   3
 
Vous pouvez me montrer comment faire la méthode si j'implémente un comparator dans la classe Mot ? merci
0
histl4000 Messages postés 129 Date d'inscription   Statut Membre Dernière intervention   3
 
J'ai fais :

public class Mot implements Comparable<Mot>{
0