已有101人关注
关于TreeMap集合的重写排序方法
发表在Java图书答疑 2020-02-24 《零基础学Java》第10章 泛型与集合类
是否精华
版块置顶:

import java.util.Comparator;

import java.util.Iterator;

import java.util.Map;

import java.util.TreeMap;


public class Test implements Comparator<String> {

@Override

public int compare(String o1, String o2) {   //重写排序

return o2.compareTo(o1);//无论如何改这个表达式,排序结果都不变,甚至直接写成1或-1

}

public static void main(String[] args) {

Map map = new TreeMap<String, Integer>();

map.put("690以上", 20);// 添加数据

map.put("689以上", 6);

map.put("688以上", 6);

map.put("687以上", 5);

map.put("686以上", 5);


Iterator it = map.keySet().iterator();// 创建迭代器,遍历打印

while (it.hasNext()) {

String key = (String) it.next();

System.out.println(key + "\t" + map.get(key));

}}}

以上代码中的重写排序方法好像不起作用,return o2.compareTo(o1);和return o1.compareTo(o2);的排序结果都一样,甚至return -1和return 1的排序结果都一样,不知道错在那里?求指导,谢谢老师

分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2020-02-26
沙发

你创建了排序器,但没有在Map中使用,查询API可以看到,TreeMap有一个构造方法可以传入你要自己定义的排序器,你需要传入Test对象

image.png

ywfpclt
学分:577 LV6
2020-02-26
板凳

根号申 发表于2020-02-26 10:45

你创建了排序器,但没有在Map中使用,查询API可以看到,TreeMap有一个构造方法可以传入你要自己定义的排序器,你需要传入Test对象

image.png

整个明白了

这个参数一直传不对

Map map = new TreeMap<String, Integer>(new Test())

这样就可以了,谢谢申老师

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照