aismvy 2018-11-07 11:07 采纳率: 50%
浏览 1656
已采纳

java中 往treeMap的构造方法中放 new new Comparator<User>() {}编译出错

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);
        }

    });

    代码是这个

    ![图片说明](https://img-ask.csdn.net/upload/201811/07/1541588854_676951.png)
  • 写回答

5条回答 默认 最新

  • 飘落的秋风 2018-11-07 11:17
    关注

    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()); 
        }
    });
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?