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
中的单个单词
每个str
中的字符wordArray[i]
数组。
首先,我想对每个str
的{{1}}中存储的各个字符进行排序。
然后我想对wordArray
中的每个单词进行排序,但我想保留wordArray
中单词的原始索引供以后使用。
为此,我正在使用这个类:
string
但Class Caste异常发生在ComparableTimsort或其他东西中,我不知道。
根据我在上一个问题中所读到的内容,我们必须覆盖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]]);
}
}
}
。
但是我不知道在哪里覆盖它,我应该在compareTo
类中覆盖它,我实际上在哪里排序,或者我应该在PrintAnagram
或WordArray
中覆盖它。如果有人有时间解释这些东西,那么请你或者你可以指出一些资源,其中所有这些都清楚地解释。我对Java很新。
例外:
DuplicateArray
答案 0 :(得分:2)
您的班级WordArray
应使用Comparable
函数实现要对其进行排序的界面Arrays.sort
。
因此WordArray
的签名应该是:
public class WordArray implements Comparable<WordArray>
并且该类应该实现该方法:
public int compareTo(WordArray compareWordArray)
或者您应该提供Comparator
方法的sort
接口的明确实现。
有关详细信息,请参阅this。
答案 1 :(得分:2)
或者您可以将比较器定义为第二个参数。
Arrays.sort(da.wordArray, comparator);