我头疼,调试困难。我正在尝试比较两个通用值,以便可以根据值将它们插入到数组中进行排序。这是我第一次使用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
我认为所需的所有代码都在那里。我尝试使它们尽可能简洁,但是如果有人需要任何其他代码,我很乐意提供。干杯!
最佳答案
多亏了Chrylis,Catalin Pol和Louis Wasserman的共同努力,我才知道我需要将课堂改正为:
public class SortedValueStore<K, V extends Comparable<? super V>> implements PairStore187<K, V>, Iterable<K>, {
我不再需要编写自己的compareTo()方法。
这成功了。我对java相对较新,因此花了我一段时间才能理解每个人的说法,但是每个人都坚持不懈地努力。感谢大家的帮助!