简体   繁体   English

如何重写compareTo Double方法?

[英]How to override compareTo Double method?

I tried to override compareTo method however I see compiler uses Java.lang.Double.compareTo method instead of my compareTo . 我试图重写compareTo方法,但是我看到编译器使用Java.lang.Double.compareTo方法而不是我的compareTo
What is wrong here and what should I fix and change so my own compareTo method will be used? 这里有什么问题,我应该修复和更改什么,以便使用我自己的compareTo方法?

package GenerecEx;
import java.util.ArrayList;
import java.util.Collections;

public class ArraySort implements Comparable{

double val;
static ArrayList<Double> a=new ArrayList<Double>();

public static void main(String[] args) {
    a.add(2.4);
    a.add(8.4);
    a.add(9.4);
    a.add(4.4);
    a.add(6.4);

    sort(a);
    printList(a);

}

public static void printList(ArrayList a1)
{
    System.out.println(a1.toString());
}

static public void sort(ArrayList <Double> a1)
{
    for (int i=0;i<a1.size();i++){
        for(int j=0;j<a1.size()-i-1;j++){
            if (a1.get(j).compareTo(a1.get(j+1))>0){
                double temp = a1.get(j);
                a1.set(j,a1.get(j+1) );
                a1.set(j+1, temp);
            }
        }
    }

}
@Override
public int compareTo(Object element)
{
    if (this.val < (Double) element)
        return -1;
    else return 1;
}
}

Implementing the Comparable interface allows you to override the compareTo method on the implementing class . 通过实现Comparable接口,可以重写实现类上的 compareTo方法。 Having implemented Comparable on the ArraySort class, your compareTo method should actually be comparing objects of type ArraySort , not generic Object s cast as Double . ArraySort类上实现Comparable ArraySort ,您的compareTo方法实际上应该在比较ArraySort类型的ArraySort ,而不是比较ArraySortDouble通用Object

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM