兰舟千帆 2022-02-14 14:47 采纳率: 76.2%
浏览 74
已结题

java里面有关比较器的一个小问题。

这个不知道是什么问题。求解。
自己定义了一个比较器,是TreeMap的。自己想要先通过值进行比较,如果值一样,就通过键进行比较。

img

  • 写回答

5条回答 默认 最新

  • 金山老师 2022-02-14 16:22
    关注

    是这个意思不 ??

    
    package org.jshand.itextpdf;
    
    import java.util.Comparator;
    import java.util.TreeMap;
    
    /**
     * 项目:commons
     * 创建时间:  2022-02-14   16:12
     * 作者 :金山
     * 描述 :
     */
    public class TreeMapCompareDemo {
    
        /**
         * 全局map,便于比较器中使用
         */
        public static TreeMap<String,Integer> tm;
    
        public static void main(String[] args) {
            Comparator comparator;
            tm = new TreeMap(new TreeMapCompare());
            tm.put("lqx",12);
            tm.put("fqy",16);
            tm.put("znk",10);
            tm.put("jgdabc",20);
        }
    
    
    
        static class TreeMapCompare implements   Comparator<String>{
    
            @Override
            public int compare(String key1, String key2) {
                Integer v1 = tm.get(key1);
                Integer v2 = tm.get(key2);
                return v1.compareTo(v2 )==0?
                        key1.compareTo(key2)    //如果value相等则比较key
                              :
                        v1.compareTo(v2 ); //如果value不等则按照value比较
    
    
            }
        }
    
    }
    
    
    

    img

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月22日
  • 已采纳回答 2月14日
  • 创建了问题 2月14日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程