我正在尝试使用类似的界面,以便我可以在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;
}
}