我正在尝试实现的排序类遇到问题。 我不想覆盖我在其他类中的compareTo方法,但如果我不使这个类抽象,那就是它要求我做的事情。 有什么事我可以解决这个问题吗?
compareTo方法
public int compareTo(Course other)
{
if(this.getPoints() > other.getPoints())
return 1;
else if(this.getPoints() == other.getPoints())
return 0;
else
return -1;
}
排序类
public abstract class Sorting implements Comparable<Course>
{
public static void Sorting(Comparable[] arr)
{
int min;
Comparable temp;
for(int i = 0; i < arr.length-1; i++)
{
min = i;
for(int scan = i + 1; scan < arr.length; scan++)
{
if(arr[scan].compareTo(arr[min]) < 0)
min = scan;
temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}//end Sorting
}//end class Sorting
这些是我得到的错误/警告
Sorting.java:14: warning: [unchecked] unchecked call to compareTo(T) as a member
of the raw type Comparable
if(arr[scan].compareTo(arr[min]) < 0)
^
where T is a type-variable:
T extends Object declared in interface Comparable
Sorting.java:17: warning: [unchecked] unchecked conversion
temp = arr[min];
^
required: Comparable<Course>
found: Comparable
2 warnings
我假设这是因为compareTo接受了课程其他,但我传递的是arr [min],如果就是这样,我怎么能改变它才能使它工作?
答案 0 :(得分:3)
应该是
class Course implements Comparable<Course> {
public int compareTo(Course other){...}
...
}
和
public abstract class Sorting {
public static void sorting(Course[] arr){
for(int i = 0; i < arr.length-1; i++){
int min = i;
for(int scan = i + 1; scan < arr.length; scan++) {
if(arr[scan].compareTo(arr[min]) < 0){
min = scan;
}
Course temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}//end Sorting
}
或者,您可以简单地使用
public static void sorting(Course[] arr){
Arrays.sort( arr );
}