使用可比较的界面来比较两个对象

时间:2013-06-26 17:58:56

标签: java comparable

我正在尝试使用类似的界面,以便我可以在Param<?,?>对象列表中使用Collection API中的搜索算法。我不知道如何正确实现compareTo方法,因为它的字段不是必需的数字。我如何实现此方法,以便Collections API算法能够正确处理此对象的集合?

public final class Param <K,V> implements Comparable<Param<K,V>>{

private final K key;
private final V value;

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

@Override
public boolean equals(Object obj) 
{
    if(obj == null)
        return false;

    if (!obj.getClass().getName().equals(this.getClass().getName()))
        return false;

    @SuppressWarnings("unchecked")
    Param<K, V> param = (Param<K, V>)obj;
    if (this.getKey ().equals(param.getKey()) && this.getValue().equals(param.getValue()))
        return true;

    return false;
}

@Override
public int hashCode() 
{
    int hash = 5;

    hash += this.key.hashCode();
    hash += this.value.hashCode();
    return hash;
}


public int compareTo(Param <K,V> o)
{
    if (this.hashCode() == o.hashCode())
        return 0;
    return -1;
}
}

0 个答案:

没有答案