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

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条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料