老师,通过比较器实现比较规则这个显示下面这一行
Map<Student,String> treeMap = new TreeMap<>(new StudentComparator());
出了问题,能帮我看一下是什么问题吗?
package 双例集合;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
* 元素自身实现比较规则 TreeMap可以对键进行排序
*/
public class TreeMapTest {
public static void main(String[] args) {
//实例化TreeMap
Map<Users,String> map = new TreeMap<>();
//创建User对象
Users u1 = new Users("liu",18);
Users u2 = new Users("admin",20);
Users u3 = new Users("sxt",20);
map.put(u1,"liu");
map.put(u2,"admin");
map.put(u3,"sxt");
Set<Users> keys = map.keySet();
for (Users key:keys){
System.out.println(key+" "+map.get(key));
}
System.out.println("-----通过比较器实现比较规则-------");
//java.lang.ClassCastException: 双例集合.Student cannot be cast to java.lang.Comparable
//创建StudentComparator对象,然后交给TreeMap的构造方法中
Map<Student,String> treeMap = new TreeMap<>(new StudentComparator());
Student s1 = new Student("liu",18);
Student s2 = new Student("admin",20);
Student s3 = new Student("sxt",20);
treeMap.put(s1,"liu");
treeMap.put(s2,"admin");
treeMap.put(s3,"sxt");
Set<Student> keys2 = treeMap.keySet();
for (Student key:keys2){
System.out.println(key+" "+treeMap.get(key));
}
}
}
