我遇到了头疼我调试有困难。我试图比较两个通用值,以便我可以根据值将它们插入到数组中。这是我第一次使用Comparable和Comparator接口,因此围绕这些问题的任何其他建议都会很棒。
这是我班级的设置方式:
public class SVStore<K, V extends Comparable<V>> implements Pairs<K, V>, Iterable<K>, Comparable<V>, Comparator<V> {
put()方法:
@Override
public V put(K key, V value) {
SVData<K, V> tab[] = table;
for (int i = 0; i < table.length - 1; i++) {
if (value.compareTo(tab[i].dataValue) <= 0) {
int index = i;
for( int j = index; j < size - 1; j++){
tab[j + 1] = tab[j];
}
}
tab[i].setDataKey(key);
tab[i].setDataValue(value);
size++;
}
return value;
}
这些是我试图实现的compareTo()和compare方法。
@Override
public int compareTo(V t) {
return compare(t, this);
}
@Override
public int compare(V t, V t1) {
if (t.equals(t1)){
return 0;
} else if (t < t1){
return -1;
} else {
return 1;
}
}
我遇到的第一个问题是在compareTo()方法中,它以“this”为中心。错误说“必需:V,V 发现:V,SVStore“。我知道答案不是将”this“转换为V.我如何将它与该数组索引中的V进行比较?
我遇到的第二个问题是......}否则if(t 我认为所需的所有代码都在那里。我尽量保持这些简洁,但如果有任何需要的额外代码,我很乐意提供它。干杯!
答案 0 :(得分:1)
感谢Chrylis,Catalin Pol和Louis Wasserman的共同努力,我知道我需要纠正我的课程:
public class SortedValueStore<K, V extends Comparable<? super V>> implements PairStore187<K, V>, Iterable<K>, {
我不再需要编写自己的compareTo()方法。
这就是诀窍。我对java比较陌生,所以我花了一段时间才能得到每个人的意见,但每个人都坚持不懈地努力。感谢大家的帮助!