public class WordArray {
public char[] str;
public int[] index;
}
这是一个在字符数组中存储单词的类str
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 数组复制string
到 each 中的字符str
数组wordArray[i]
。
首先,我想对存储在str
每个wordArray
.
然后我想对中的每个单词进行排序,wordArray
但我想保留单词的原始索引以 string
供以后使用。为此,我正在使用此类:
public class PrintAnagram {
public static void printAnagram(String[] string) {
DuplicateArray da = DuplicateArray.getDupArray(string.length, string);
for (int i = 0; i < string.length; i++) {
Arrays.sort(da.wordArray[i].str);
}
Arrays.sort(da.wordArray);
for (int i = 0; i < string.length; i++){
System.out.println(string[da.wordArray[i].index[i]]);
}
}
}
但是类种姓异常发生在 ComparableTimsort 之类的,我不知道。根据我在上一个问题中所读到的内容,我们必须覆盖compareTo
. 但是我不知道在哪里覆盖它,我应该在PrintAnagram
class 中覆盖它,我实际上是在哪里排序,还是应该在 inWordArray
或 in 中覆盖它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)