étudiant de classe J'ai fait un étudiant de classe qui accepte le numéro de rôle, la norme, le prénom et le nom de famille. J'utilise TreeSet pour entrer les valeurs dans l'étudiant. Je reçois une exception de cast de classe sur ce programme lorsqu'il est exécuté. Est-ce parce que j'entre des valeurs heterogeneus que le Treeset ne peut pas trier.Pourquoi TreeSet donne-t-il une exception de classification
public class Student {
private int rollno;
private int std;
private String firstname;
private String lastname;
//getters , setters, constructors, toString
@Override
public int hashCode(){
return Objects.hash(rollno, std, firstname,lastname);
}
}
StudentTest de classe qui a principal()
public class StudentTreeSet {
public static void main(String[]args){
Set<Student> students = new TreeSet<Student>();
Student s1 = new Student(1,2,"Shelly","Bhargav");
Student s2 = new Student(1,2,"Shelly","Bhargav");
Student s3 = new Student(3,2,"Shelly","Bhargav");
students.add(s1);
students.add(s2);
students.add(s3);
students.add(s1);
students.add(s2);
students.add(s3);
System.out.println();
System.out.println();
int studentsize2 = students.size();
System.out.println("Again Students size ="+ studentsize2);
for(Student student : students){
System.out.println(student);
System.out.println("student hashcode="+student.hashCode());
}
}
}
sortie:
Exception in thread "main" java.lang.ClassCastException: com.techlabs.studenthashset.Student cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at com.techlabs.TreeSet.StudentTreeSet.main(StudentTreeSet.java:18)
Montrez-nous qu'il Exception vous obtenez. Je spéculerais que vous l'obtenez parce que votre classe '˙Student' n'implémente pas' Comparable' qui serait nécessaire à 'TreeSet'. (Ou un 'comparateur 'spécifié dans l'instanciation ...) –