繁体   English   中英

使用类似的Java进行排序

[英]sorting using comparable java

我正在尝试对记录数组进行排序。 但是我收到“不是记录”错误。 方法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();
    }
}

一种简单的方法是使用泛型:

public class Record implements Comparable<Record> {

...

public int compareTo(Record check){
    return getCount().compareTo(check.getCount());
}

我的猜测是数组中的空项目。 “ null instanceof Class”将返回false。

这将引发异常:

Record[] array = new Record[] { new Record(...), null };
Arrays.sort(array);

使用泛型! 还有一个@Override注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM