我头疼,调试困难。我正在尝试比较两个通用值,以便可以根据值将它们插入到数组中进行排序。这是我第一次使用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相对较新,因此花了我一段时间才能理解每个人的说法,但是每个人都坚持不懈地努力。感谢大家的帮助!

09-09 20:00