使用Comparable和Comparator比较generics类型

我遇到了头疼我调试有困难。 我试图比较两个通用值,以便我可以根据值将它们插入到数组中。 这是我第一次使用Comparable和Comparator接口,因此围绕这些问题的任何其他建议都会很棒。

这就是我的课程设置方式:

public class SVStore<K, V extends Comparable> implements Pairs, Iterable, Comparable, Comparator { 

put()方法:

 @Override public V put(K key, V value) { SVData 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 <t1){在compareTo()方法中。 错误是“二元运算符'<'第一类型的坏操作数类型:V第二类型:V”。 如果两种类型都将V识别为V,为什么它是一个糟糕的操作数?

我认为所需的所有代码都在那里。 我尽量保持这些简洁,但如果有任何其他需要的代码,我很乐意提供它。 干杯!

感谢Chrylis,Catalin Pol和Louis Wasserman的共同努力,我了解到我需要纠正我的课程:

 public class SortedValueStore> implements PairStore187, Iterable, { 

我不再需要编写自己的compareTo()方法。

这样做了。 我对java比较陌生,所以我花了一段时间才能得到每个人的意见,但每个人都坚持不懈地努力。 感谢大家的帮助!