Lorsque je lance le code ci-dessous, Collection.sort (l) lancera l'exception ci-dessous.Tri de la collection Java
Exception dans le thread "principal" java.lang.ClassCastException: learning.CollectionSort ne peut pas être jeté à java.lang.Comparable
public class CollectionSort {
public static void main (String[] args){
List l = new ArrayList();
CollectionSort obj1 = new CollectionSort();
CollectionSort obj2 = new CollectionSort();
l.add(obj1);
l.add(obj2);
Collections.sort(l);
for (int i = 0; i < l.size(); i++){
System.out.println(l.get(i));
}
}
}
En effet, nous devons mettre en œuvre comparable ou d'un comparateur pour trier des objets personnalisés. Normalement, nous aurons des propriétés dans un objet qui sont utilisées pour le tri.
Mais dans le code ci-dessus, nous n'avons pas de propriétés dans cette classe. Donc, est-il possible de trier la liste ci-dessus? S'il vous plaît partagez vos pensées.
Eh bien, si vous voulez trier, vous devez implémenter 'Comparable'. – Mritunjay
Ummm, non. La liste contient deux objets 'CollectionSort'. Pour le trier, la méthode de tri doit indiquer quel objet est "inférieur" à l'autre. Comment peut-il faire cela, si vous ne lui avez pas fourni un moyen de le savoir? Que pensiez-vous que le genre allait faire avec ces objets? – ajb