我正在尝试对记录数组进行排序。但我得到“不是记录”的错误。方法getCt()在不同的类中,程序编译,数组是记录类型。我真的不知道这段代码有什么问题。
哈希表:
public class HashTable {
private Record [] array;
private int size;
private int indexSize=0;
private boolean updated,found;
public HashTable(int m){
array= new Record[m];
size=0;
}
public void getCt() {
Arrays.sort(array);
// return array[0];
}
记录课程:
import java.lang.Comparable;
import java.util.*;
public class Record implements Comparable {
private Integer count;
private DNSkey key;
public Record(DNSkey key) {
this.key = key;
count = 1;
}
public void update() {
count++;
}
public DNSkey getKey() {
return key;
}
public Integer getCount() {
return count;
}
public int compareTo(Object obj) {
if (!(obj instanceof Record)) {
throw new ClassCastException("Not a Record");
}
Record check = (Record) obj;
return getCount().compareTo(check.getCount());
}
public String toString() {
return getKey() + " " + getCount();
}
}
答案 0 :(得分:3)
一种简单的方法是使用泛型:
public class Record implements Comparable<Record> {
...
public int compareTo(Record check){
return getCount().compareTo(check.getCount());
}
答案 1 :(得分:3)
我的猜测是数组中的空项。 “null instanceof Class”将返回false。
这将抛出异常:
Record[] array = new Record[] { new Record(...), null };
Arrays.sort(array);
答案 2 :(得分:-2)
使用泛型!和@Override注释。