在泛型类中扩展Comparable

时间:2013-05-26 17:19:08

标签: java

我是Java的新手,我遇到了问题。我需要一个类来存储两个值,一个名为key,另一个名为value。该类可以存储对象,返回value并允许通过比较键值来比较两个对象。

public class Entry <K,V> implements Comparable<Entry<K,V>> 
{
    private K key;
    private V value;

    public Entry(K key,V value)
    {
        this.key=key;
        this.value=value;
    }

    public void setValue(V value)
    {
        this.value=value;
    }

    public String toString()
    {
        return "key= "+key+" value=" +value;
    }
}

他现在要我添加Comparable方法。我也被允许使用equalsTo(Object)。我该如何实施Comparable?我试过了

public Comparable(k key)
{
    if (this.k < k)
        return -1; 

    if (this.k > k)
        return 1;

    else return 0;
}

但我收到错误消息,说我不能使用><

1 个答案:

答案 0 :(得分:6)

此处的其他答案似乎非常混淆了泛型和Comparable interface

以下是一些将编译的代码:

public class Entry<K extends Comparable<K>, V> implements Comparable<Entry<K, V>> {

    private final K key;
    private V value;

    public Entry(K key, V value) {
        this.key = key;
        this.value = value;
    }   

    @Override
    public int compareTo(Entry<K, V> other) {
        return key.compareTo(other.key);
    }
}

因此,您强制键的类型也将Comparable扩展为自身;然后,您可以使用其compareTo方法根据密钥将Entry与其他Entry进行比较。