TreeMap 怎么按照排序

Hypnoz20123spring 2012-02-02 09:02:04
TreeMap<string,MyClass> 这个是我的TreeMap
MyClass里头有个int score 的类属性
MyClass{
int score;
string word;
}

我想按照MyClass的score 把这个TreeMap排序 请问怎么做呢
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2012-02-03
  • 打赏
  • 举报
回复
楼主没有理解什么是MAP,TreeMap是按照Key来排序的。
楼主不妨使用TreeSet,这样,Set里面的元素,就可以直接排序存储。
当然,要重写compare方法,或者,写一个比较器。
qq931226110 2012-02-03
  • 打赏
  • 举报
回复
自己定义一个比较器
Java codepublic class MyClassComparator implements Comparator<MyClass>{
@Override
public int compare(MyClass m1, MyClass m2) {
if(m1.getScore()>m2.getScore()){
return 1;
} else if(m1.getScore()<m2.getScore()) {
return -1 ;
} else {
return m1.getWord().compareTo(m2.getWord()) ;
}
}
}
qq931226110 2012-02-03
  • 打赏
  • 举报
回复
@Override
public int compareTo(MyClass myClass) {
if(this.score>myClass.score){
return 1 ;
} else if(this.score<myClass.score){
return -1 ;
} else {
return this.word.compareTo(myClass.word) ;
}
}

孤雨 2012-02-02
  • 打赏
  • 举报
回复
让MyClass实现Comparable覆写comparaTo方法指定排序规则。
@Override
public int compareTo(MyClass myClass) {
if(this.score>myClass.score){
return 1 ;
} else if(this.score<myClass.score){
return -1 ;
} else {
return this.word.compareTo(myClass.word) ;
}
}

或者自己定义一个比较器
public class MyClassComparator implements Comparator<MyClass>{
@Override
public int compare(MyClass m1, MyClass m2) {
if(m1.getScore()>m2.getScore()){
return 1;
} else if(m1.getScore()<m2.getScore()) {
return -1 ;
} else {
return m1.getWord().compareTo(m2.getWord()) ;
}
}
}

TreeMap<MyClass,String>
kangbazifage 2012-02-02
  • 打赏
  • 举报
回复
自定义Comparator,手机上网不好写代码,见谅
结贴是美德 2012-02-02
  • 打赏
  • 举报
回复
改成TreeMap<MyClass,String>。让MyClass实现Comparable,或者提供一个Comparator
tanrenzong1986 2012-02-02
  • 打赏
  • 举报
回复
比较直接也是笨拙的方法是:

set<MyClass> valueSet=treeMap.values();
for(int i=0;i<valueSet.size();i++)
{
for(int j=i+1;j<valueSet.size();j++O)
{
MyClass mc=null;
if(valueSet[i.score<valueSet[j].score)
{
mc=valueSet[j];
valueSet[j]=valueSet[i];
valueSet[i]=mc;
}
}
}


建议最好把TreeMap<string,MyClass>改为TreeMap<Integer,MyClass>,其中key就存score字段,这样treeMap存入时就会排好序。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧