import java.util.*;
  class CComparator implements Comparator<String>{ @Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
Integer m1=Integer.parseInt(o1);
Integer m2=Integer.parseInt(o2);
if(m1>=m2){
return m1-m2;
}
return m2-m1;
}

}
public class test  {
public static void main(){
String id,ctime;
Map<String,String> ha=new HashMap<String,String>();
for(int i=0;i<=11;i++){
Scanner ac=new Scanner(System.in);
System.out.println("请输入ID号:");
id=ac.nextLine();
System.out.println("请输入Ctime:");
ctime=ac.nextLine();
ha.put(id, ctime);
}
Collections.sort(ha,new CComparator());//这儿该怎么写???????????????
System.out.println();


}
}

解决方案 »

  1.   

    Collections的sort方法对List排序的,不对Map排序,需要Map排序可以用TreeMap
      

  2.   

    我将ha改成TreeMap类型后,又该怎么样写???
      

  3.   


    不是有现成的tree map 吗
      

  4.   

    重写 hashcode和equals方法就可以了
      

  5.   


    @Override
    public boolean equals(Object arg0) {
    // 加入你要的代码逻辑
    /*
     * YourObject your = (YourObject) arg0;
     * if(your > this){
     *  return true;
     * }
     * 
     * return false;
     * 
     */
    return super.equals(arg0);
    } @Override
    public int hashCode() {
    // TODO Auto-generated method stub
    return super.hashCode();
    }
      

  6.   

    要个一个类实现你自定义的排序规则就要重写Comparable接口,你也可以自己单独写一个类实现Comparator接口
      

  7.   

    如果你使用TreeMap,那简单啊Map<String,String> ha=new HashMap<String,String>(new CComparator ());就可以了
      

  8.   

    HashMap本来就是无序的,你怎么能用Collections.sort对一个MAP的子类排序呢~Collections.sort只能对List的实例进行排序
    要实现一个Comparator你可以这样写:class StudentComparator implements Comparator<Student>{ // 实现比较器
    // 因为Object类中本身已经有了equals()方法
    public int compare(Student s1,Student s2){
    if(s1.equals(s2)){
    return 0 ;
    }else if(s1.getAge()<s2.getAge()){ // 按年龄比较
    return 1 ;
    }else{
    return -1 ;
    }
    }
    };
      

  9.   

    不过我觉得你的Comparator应该有问题吧// TODO Auto-generated method stub
    Integer m1=Integer.parseInt(o1);
    Integer m2=Integer.parseInt(o2);
    if(m1>=m2){
    return m1-m2;
    }
    return m2-m1;这样总会返回大于0,我想应该是错的。我想应该会// TODO Auto-generated method stub
    Integer m1=Integer.parseInt(o1);
    Integer m2=Integer.parseInt(o2);
    return m1-m2;
    就可以了