这是排序的方法,但默认是对int排序,我想对double排序,该怎么修改?谢谢高手来指导!!因为Comparator的compare方法返回的是int的,所以不知道怎么改,是不是重写个Comparator的接口?我是个菜鸟,请各位高手指导下,感谢
public class Compare implements Comparator<Term> {
@Override
public int compare(Term o1, Term o2) {
if(((Double)o1.getZDX()).doubleValue() > ((Double)o2.getZDX()).doubleValue())
return -1;
if(((Double)o1.getZDX()).doubleValue()==((Double)o2.getZDX()).doubleValue())
return 0;
if(((Double)o1.getZDX()).doubleValue() < ((Double)o2.getZDX()).doubleValue())
return 1;
return 0;
}
}

解决方案 »

  1.   


    public class Term { private double term;
    public Term(double term){
    this.term=term;
    }
    public double getTerm() {
    return term;
    }
    public void setTerm(double term) {
    this.term = term;
    }
    }import java.util.Arrays;
    import java.util.Comparator;
    public class TermSort{
    public static void main(String[] args){
    Term[] array = new Term[5];
    array[0] = new Term(1.56);
    array[1] = new Term(2.51);
    array[2] = new Term(8.56);
    array[3] = new Term(2.56);
    array[4] = new Term(5.23);
    Arrays.sort(array,new Comparator<Term>(){
    @Override
    public int compare(Term o1, Term o2) {
    double t1=o1.getTerm();
    double t2=o2.getTerm();
    return t1>t2?1:(t1<t2)?-1:1;
    }
    });
    for(Term t:array){
    System.out.println(t.getTerm());
    }
    }}
      

  2.   

    谢谢,高手。
    我的问题是把处理好的数据先放到array数组里,然后排序,而不是直接给好的数据,该怎么改?
    呵呵,不好意思,我是菜鸟,问的问题不好,别介意啊
      

  3.   

    用 Arrays 相当方便啊。double[] dArray = new double[]{12.0,45.81,45.8,45.23,4.6};
    Arrays.sort(dArray);// 排序。
    System.out.println(Arrays.toString(dArray));
      

  4.   

    怎么样把处理好的数据放到数组里,然后排序输出,这些数据是double型的。
    谢谢你啊
      

  5.   

    感觉你用ArrayList比较方便吧,一边处理,一边把结果放到ArrayList中。如果要是数组的话还要注意下标问题。至于排序使用Arrays类吧。Comparable接口的返回值是用来显示两个值的比较结果的,跟你比较的值没啥关系。你也可以实现这个接口来比较对象的!
      

  6.   

    java.util.Arrays
    static void sort(float[] a) 
     
      

  7.   

    static void sort(double[] a)  
      

  8.   

    谢谢楼上的。我是这样做的
    我重写Comparator接口把int改成double,然后重写了Compare方法,但是Collections.sort出错,这是为什么啊?
    public interface Comparator<T>{
       public double compare(T o1,T o2);
       boolean equals(Object obj);
    }public class Compare implements Comparator<Term> {
    @Override
    public double compare(Term o1, Term o2) {
    if(((Double)o1.getZDX()).doubleValue() > ((Double)o2.getZDX()).doubleValue())
    return -1;
    if(((Double)o1.getZDX()).doubleValue()==((Double)o2.getZDX()).doubleValue())
    return 0;
    if(((Double)o1.getZDX()).doubleValue() < ((Double)o2.getZDX()).doubleValue())
    return 1;
    return 0;
    }
    }
      

  9.   

    public class Compare implements Comparator<Term> {
        @Override
        public double compare(Term o1, Term o2) {
            if(((Double)o1.getZDX()).doubleValue() > ((Double)o2.getZDX()).doubleValue())
                return -1;
            if(((Double)o1.getZDX()).doubleValue()==((Double)o2.getZDX()).doubleValue())
                return 0;
            if(((Double)o1.getZDX()).doubleValue() < ((Double)o2.getZDX()).doubleValue())
                return 1;
            return 0;
        }
        }参数用object
    对象里面再强转
      

  10.   

    The method sort(List<T>, Comparator<? super T>) in the type Collections is not applicable for the arguments (List<Term>, Compare)
    出现这个错误,为什么啊?
      

  11.   

     public double compare(T o1,T o2);你为什么要这么改!!!!!! 有何意义!!!!!比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
      

  12.   

    把要排序的数放到数组中, 然后用  Arrays.sort(数组); 进行排序
      

  13.   

    直接java.util.Arrays.sort()不可以么???非要重写接口啊?你重写comparator也可以实现,注意类型就好,不过最好直接使用java.util.Arrays.sort()估计好点,因为double在电脑存储可能有误差,如果两个数字相差过小就可能有问题,不过你也可以使用BigDecimal处理,但是这样越弄越复杂了
      

  14.   


    如果是这样的话,只能对java自带的类型使用Arrays.sort方法进行排序,因为哪些类通常都实现了排序接口,可如果是我们自定义的类型的,这个就要我们自己去实现排序接口了,其实就是返回1,0,-1而已
      

  15.   

    public class Compare implements Comparator<Term> {
      @Override
      public double compare(Term o1, Term o2) {
       return java.lang.Double.compare(o1.getTerm(), o2.getTerm());
      }
      }
      

  16.   

    何必那么烦恼,自己比较,然后返回结果就好了啊!
    public int compareTo(Rain o) {
    if(this.getRnum() > o.getRnum()){
    return -1;
    }
    else if(this.getRnum() < o.getRnum()){
    return 1;
    }
    else{
    return 0;
    }
    }
      

  17.   


    List<Double> doubles  = new ArrayList<Double>() ;
    for (int i = 1; i < 100; i++) 
    doubles.add(i/7d) ;
    Collections.sort(doubles,new Comparator<Double>() {
    @Override
    public int compare(Double o1, Double o2) {
    // TODO Auto-generated method stub
    int i = 0 ;
    double d = o2 -o1 ;
    if(d>0)
    i = 1 ;
    if(d<0)
    i = -1 ;
    return i;
    }
    }) ;
    for (Double double1 : doubles) {
    System.out.println(double1);
    }