兰舟千帆 2022-02-14 18:21 采纳率: 76.2%
浏览 45
已结题

一个关于比较器重写的问题,java



package java_practice;

import java.util.Collection;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;

public class TreeMapDemo {
    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);
    }



    public 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

  • 写回答

3条回答 默认 最新

  • 金山老师 2022-02-14 20:47
    关注

    兄弟,我在你上一个问题给你回复了

    package org.jshand.itextpdf;
    
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.TreeMap;
    
    /**
     * 项目:commons
     * 创建时间:  2022-02-14   16:12
     * 作者 :金山
     * 描述 :
     */
    public class TreeMapCompareDemo {
    
        /**
         * 全局map,便于比较器中使用
         */
    
    
        public static void main(String[] args) {
            Comparator comparator;
            HashMap<String,Integer> baseMap = new HashMap();
            baseMap.put("lqx",12);
            baseMap.put("fqy",16);
            baseMap.put("znk",10);
            baseMap.put("aa",15);
            baseMap.put("bb",15);
            baseMap.put("cc",20);
            baseMap.put("dd",20);
            baseMap.put("jgdabc",20);
    
            TreeMap tm = new TreeMap(new TreeMapCompare(baseMap));
            tm.putAll(baseMap);
    
            System.out.println(tm);
        }
    
    
    
        static class TreeMapCompare implements   Comparator<String>{
            private HashMap<String,Integer> baseMap = null;
    
            public TreeMapCompare(HashMap baseMap) {
                this.baseMap = baseMap;
            }
    
            @Override
            public int compare(String key1, String key2) {
                Integer v1 = baseMap.get(key1);
                Integer v2 = baseMap.get(key2);
                return v1.compareTo(v2 )==0?
                        key1.compareTo(key2)    //如果value相等则比较key
                              :
                        v1.compareTo(v2 ); //如果value不等则按照value比较
    
    
            }
        }
    
    }
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式