使用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比较陌生,所以我花了一段时间才能得到每个人的意见,但每个人都坚持不懈地努力。 感谢大家的帮助!