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 -
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.
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
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:
- Trier une liste avec SortedSet
- Liste déroulante excel - Guide
- Excel trier par ordre croissant chiffre - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
1 réponse
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 :
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.
"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.
Comment as tu implémenté la méthode de comparaison ?