0

レコードの配列を並べ替えようとしています。しかし、「レコードではありません」というエラーが発生します。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();
    }
}
4

3 に答える 3

3

簡単な方法の1つは、ジェネリックを使用することです。

public class Record implements Comparable<Record> {

..。

public int compareTo(Record check){
    return getCount().compareTo(check.getCount());
}
于 2012-10-03T10:22:45.543 に答える
3

私の推測では、配列内の項目は null になります。「null instanceof Class」は false を返します。

これにより例外がスローされます。

Record[] array = new Record[] { new Record(...), null };
Arrays.sort(array);
于 2012-10-03T10:25:40.530 に答える
-2

ジェネリックを使おう!そして @Override アノテーション。

于 2012-10-03T10:38:30.233 に答える