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)。 –