package Test;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<Student> t = new TreeSet<Student>() ;
Student S1 = new Student(1,"张1");
Student S2 = new Student(2,"李4");
Student S3 = new Student(3,"王5");
Student S4 = new Student(3,"赵6");
t.add(S1);
t.add(S2);
t.add(S3);
t.add(S4);
for(Student s:t) {
System.out.println(s.toString());
}
}
}
class Student implements Comparator{
private int id;
private String name;
public Student(int id,String name) {
// TODO Auto-generated constructor stub
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return obj.equals(this.id);
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return this.id;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "id:"+id+",name:"+name;
}
@Override
public int compare(Student s1, Student s2) {
// TODO Auto-generated method stub
if(s1.id==s2.id) {
return 0;
}else if(s1.id>s2.id) {
return -1;
}else {
return 1;
}
}
}package Test;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<Student> t = new TreeSet<Student>() ;
Student S1 = new Student(1,"张1");
Student S2 = new Student(2,"李4");
Student S3 = new Student(3,"王5");
Student S4 = new Student(3,"赵6");
t.add(S1);
t.add(S2);
t.add(S3);
t.add(S4);
for(Student s:t) {
System.out.println(s.toString());
}
}
}
class Student implements Comparator{
private int id;
private String name;
public Student(int id,String name) {
// TODO Auto-generated constructor stub
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return obj.equals(this.id);
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return this.id;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "id:"+id+",name:"+name;
}
@Override
public int compare(Student s1, Student s2) {
// TODO Auto-generated method stub
if(s1.id==s2.id) {
return 0;
}else if(s1.id>s2.id) {
return -1;
}else {
return 1;
}
}
}
出现了问题:
Exception in thread "main" java.lang.ClassCastException: class Test.Student cannot be cast to class java.lang.Comparable (Test.Student is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap')
at java.base/java.util.TreeMap.compare(TreeMap.java:1291)
at java.base/java.util.TreeMap.put(TreeMap.java:536)
at java.base/java.util.TreeSet.add(TreeSet.java:255)
at Test.TreeSetDemo.main(TreeSetDemo.java:15)