J'ai une liste chaînée non triée. Pour le trier, j'ai pensé mettre les valeurs dans un TreeSet avec un comparateur fourni, puis retourner ces valeurs comme une nouvelle liste chaînée. Pourtant, cela échoue.Java: Problème avec TreeSet et LinkedList
Comparator:
public class SortSpeciesByCommonName implements Comparator<Species> {
/**
* a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
*/
@Override
public int compare(Species arg0, Species arg1) {
return arg0.getName().compareTo(arg1.getName()); //arg.getName() is String
}
}
Fonction de tri:
public static LinkedList<Species> sortedAnimals(LinkedList<Species> animals) {
TreeSet<Species> sortedBreeds = new TreeSet<Species>(new SortSpeciesByCommonName());
sortedBreeds.addAll(animals);
return new LinkedList<Species>(sortedBreeds);
}
Lors du test des valeurs, tout semble être toujours en ordre d'insertion.
Veuillez ajouter la classe d'espèces et quelques cas de test. J'ai réduit la classe d'espèces à juste des cordes et tout fonctionne bien. – sanscore