TreeMap<string,MyClass> 这个是我的TreeMap
MyClass里头有个int score 的类属性
MyClass{
int score;
string word;
}我想按照MyClass的score 把这个TreeMap排序 请问怎么做呢
MyClass里头有个int score 的类属性
MyClass{
int score;
string word;
}我想按照MyClass的score 把这个TreeMap排序 请问怎么做呢
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存入时就会排好序。
@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>
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()) ;
}
}
}
楼主不妨使用TreeSet,这样,Set里面的元素,就可以直接排序存储。
当然,要重写compare方法,或者,写一个比较器。
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) ;
}
}