如何覆盖 compareTo Double 方法?
How to override compareTo Double method?
我试图覆盖 compareTo
方法,但是我看到编译器使用 Java.lang.Double.compareTo
方法而不是我的 compareTo
.
这里有什么问题,我应该修复和更改什么以便使用我自己的 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;
}
}
实现 Comparable
接口允许您在实现 class 时覆盖 compareTo
方法 。在 ArraySort
class 上实现 Comparable
后,您的 compareTo
方法实际上应该比较 ArraySort
类型的对象,而不是通用的 Object
s 转换为Double
.
我试图覆盖 compareTo
方法,但是我看到编译器使用 Java.lang.Double.compareTo
方法而不是我的 compareTo
.
这里有什么问题,我应该修复和更改什么以便使用我自己的 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;
}
}
实现 Comparable
接口允许您在实现 class 时覆盖 compareTo
方法 。在 ArraySort
class 上实现 Comparable
后,您的 compareTo
方法实际上应该比较 ArraySort
类型的对象,而不是通用的 Object
s 转换为Double
.