我想通過編寫我自己的和使用類似的工具覆蓋java中的默認compareTo()方法,但似乎java仍然使用默認方法。compareTo()方法在使用Comparable接口時不覆蓋默認方法
我想從一個.dat文件中獲取長度的字符串數組,但它通過字母順序來代替它。我會很感激,如果有人能告訴我我做錯了什麼,因爲我無法弄清楚爲什麼這不起作用。
感謝
import static java.lang.System.*;
import java.util.Arrays;
public class Word implements Comparable
{
private String word;
private String[] array;
public Word()
{
word = "";
}
public Word(String s)
{
word = s;
}
public void setWord(String s)
{
word = s;
}
public int compareTo(String rhs)
{
String temp = (String)rhs;
if(word.length() > temp.length())
return 1;
else if(word.length() < temp.length())
return -1;
return 0;
}
public void setSize(int size)
{
array = new String[size];
}
public void add(int spot, String other)
{
array[spot] = other;
}
public String[] sortByLength()
{
Arrays.sort(array);
return array;
}
public String toString()
{
return Arrays.toString(array);
}
}
這裏是包含的主要方法
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.Arrays;
import static java.lang.System.*;
public class Lab18d
{
public static void main(String args[]) throws IOException
{
Scanner file = new Scanner(new File("lab18d.dat"));
int size = file.nextInt();
file.nextLine();
Word test = new Word();
test.setSize(size);
String word = "";
for(int i = 0; i < size; i++)
{
word = file.next();
test.setWord(word);
test.add(i, word);
}
test.sortByLength();
System.out.println(test);
}
}
哇,我很困惑,它和班上其他代碼的上下文完全吻合。我敢肯定,如果我把所有的代碼放在一行代碼中,那麼這將不起作用: Arrays.sort(array); – 2012-02-04 04:45:02
爲什麼不呢?這是一個匿名類的例子,你可以在http://en.wikibooks.org/wiki/Java_Programming/Nested_Classes#Anonymous_Classes – 2012-02-04 04:47:28
找到一個匿名類的例子。嗯,我試着複製你寫的代替數組的.sort(數組);它給了我43個錯誤。 – 2012-02-04 04:55:26