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比较
}
}
}
一个关于比较器重写的问题,java
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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比较 } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器