黑马程序员技术交流社区
标题:
麻烦帮我看看这个代码
[打印本页]
作者:
零敢
时间:
2014-1-7 17:37
标题:
麻烦帮我看看这个代码
我有这样一段代码 麻烦帮我看看public class Test {
/** * @param args */ //Map排序
public static void sortMap(){
Score s1 = new Score(40,7);
Score s2 = new Score(47,10);
Score s3 = new Score(10,-7);
Score s4 = new Score(113,57);
Score s5 = new Score(31,-57);
TreeMap tm = new TreeMap();
tm.put(s1.sum, s1);
tm.put(s2.sum, s2);
tm.put(s3.sum, s3);
tm.put(s4.sum, s4);
tm.put(s5.sum, s5);
Iterator it = tm.values().iterator();
while(it.hasNext()){
System.out.println(((Score)it.next()).sum);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub sortMap();
}
}
class Score{ int a; int b; int sum; Score(int a,int b){
this.a = a;
this.b = b;
this.sum = a + b;
}
}
我简单解释一下,我定义Score类就是为了a和b相加,Test类中定义方法实现排序,主方法来调用。按照sum总分进行排序 我不明白treemap它是怎么排序的 谁能帮我解释一下,是按照key排序么,可是key是Object对象,不是只是一个声明的标识么,我原来写的是tm.put("s1", s1); 后面的value无所谓了,是对象还是值(s1.sum)都行,都能够取到,关键是它按照什么排序的
作者:
浮出一个美
时间:
2014-1-7 17:58
如果我没有记错,被排序的类要实现comparable接口(比较的意思,具体记不得了),然后覆写compareTo(Object obj)方法,然后你就可以自己定义比较方法,如果当前对象大于obj,就返回-1,相等,返回0,小于就返回-1,快下班了,回家给你写一个
作者:
零敢
时间:
2014-1-7 18:07
浮出一个美 发表于 2014-1-7 17:58
如果我没有记错,被排序的类要实现comparable接口(比较的意思,具体记不得了),然后覆写compareTo(Object o ...
谢谢咯00000000000000000
作者:
浮出一个美
时间:
2014-1-7 19:42
默认按照键升序,这里你的键放的是整数,所以会按照数值排序,如果是字母,就按照ascii排序
作者:
渐渐不懂了
时间:
2014-1-9 13:08
TreeMap是可以保存键值对的一种方式,它的特殊之处是它可以自动以键进行降序排序。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2