public static void maptree1(Map map) {
Map<String, User> m = new TreeMap<String, User>(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.compareTo(o2);
}
});
代码是这个

Comparator 泛型应该是map的key对应的类型,或者是key的super类型
Map<String, User> m = new TreeMap<String, User>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
可以使用List ,把map的entry构造成一个List,然后使用list的比较器,这样就可以比较Entry的value了
List<Map.Entry<String, User>> list = new ArrayList<Map.Entry<String, User>>(m.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, User>>() {
@Override
public int compare(Entry<String, User> o1, Entry<String, User> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
你把上面一行的@Override删除掉看看
或者让jdk的版本>6.0
貌似不能对于TreeMap的Value排序的吧?TreeMap的仅key值可以的实现Comparator功能接口,实现自定义排序。若有不正确的地方,请不吝赐教。
User中没有compareTo方法吧,不然也不会报错了.....
具体看你要实现什么样的功能
是想在map put进去的时候就对value排序么
除非 key和value有一定的映射关系 比如 value= get(key);
就可以用
Map m = new TreeMap(new Comparator() {
@Override
public int compare(String o1, String o2) {
return get(o1).compareTo(get(o2));
}
});