我试图将插入排序应用于一个对象数组,但是如果我从未编译过,那就说"糟糕的操作数类型"。
只是想知道我是否需要制作一个非常具体的compareTo
方法,或者是否有更好的方法来比较插入排序方法中的对象数组。
编辑:
所以,我尝试使用我的compareTo
方法进行编译,但我在null pointer exception
上获得了else if
。为什么呢?
public static void insertElement(WordClass[] Words, int next)
{
WordClass value = Words[next];
int i = next;
while(true)
{
//
if(i == 0)
{
Words[0] = value;
break;
}
else if(Words[i-1].getStr().compareTo(value.getStr()) <= 0)
{
Words[i] = value;
break;
}
else
{
Words[i] = Words[i-1];
i--;
}
}
}
public static void insertionSort(WordClass[] Words)
{
for(int i = 1; i< Words.length; i++)
{
insertElement(Words, i);
}
}
//in WordClass
public int compareTo(WordClass w) //makes WordClass comparable
{
return getStr().compareTo(w.getStr());
}
答案 0 :(得分:0)
对于对象类型,您应始终使用campareTo
而不是==
或<=
运算符,除非您想要驻留两个对象变量以查看是否两者都引用同一对象。
此外,您的WordClass
类必须实现Camparable
接口才能使其正常工作。