public class WordArray {
public char[] str;
public int[] index;
}
這是存儲字的字符數組str
排序在java中的對象數組?
public class DuplicateArray {
WordArray wordArray[];
int size;
public static DuplicateArray getDupArray(int size , String string[]){
DuplicateArray da = new DuplicateArray();
da.size = size;
da.wordArray = new WordArray[da.size];
for (int i = 0; i < da.size; i++) {
da.wordArray[i] = new WordArray();
da.wordArray[i].str = new char[string[i].length()];
da.wordArray[i].index = new int[da.size];
da.wordArray[i].str = string[i].toCharArray();
da.wordArray[i].index[i] = i;
}
return da;
}
}
該類使用WordArray
類和複製來自字符串數組string
的個別單詞的字符str
陣列中的每個wordArray[i]
在一個類。
首先,我想對存儲在wordArray
的str
中的單個字符進行排序。
然後我想對wordArray
中的每個單詞進行排序,但是我想保留string
中單詞的原始索引以備後用。 對於我使用這個類:發生在ComparableTimsort什麼
但類種姓例外,對此,我也沒辦法。 從我在前面的問題中讀到的內容中,我們必須重寫compareTo
。 但我不知道在哪裏重寫它,我是否應該在PrintAnagram
類中重寫它,我實際上正在分類中,還是應該在WordArray
或DuplicateArray
中覆蓋它。如果任何人有時間來解釋這個東西,那麼請或者你可以指點我的一些資源,這一切都清楚地解釋。我對Java相當陌生。
例外:
Exception in thread "main" java.lang.ClassCastException: self.study.WordArray cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at self.study.PrintAnagram.printAnagram(PrintAnagram.java:13)
at self.study.AnagramTogether.main(AnagramTogether.java:7)
你應該看看http://stackoverflow.com/questions/683041/java-how-do-i-use-a-priorityqueue – Joren
你會在WordArray覆蓋的compareTo。它必須知道如何將自己與另一個WordArray進行比較,並確定哪個是「更大」的等等。 –
引用Arrays.sort的文檔:按照其自然順序將指定的對象數組按升序排序元素。 **數組中的所有元素都必須實現Comparable接口**。此外,數組中的所有元素必須相互可比(即e1.compareTo(e2)不得爲數組中的任何元素e1和e2拋出ClassCastException)。 –