gpt4 book ai didi

java - 使用 Comparable 和 Comparator 比较泛型类型

转载 作者:行者123 更新时间:2023-11-30 11:25:12 28 4
gpt4 key购买 nike

我遇到了令人头疼的问题,我很难调试。我正在尝试比较两个通用值,以便我可以根据值将它们插入数组中进行排序。这是我第一次使用 Comparable 和 Comparator 接口(interface),所以任何关于这些问题的额外建议都会很好。

我的类(class)是这样设置的:

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() 和比较方法。

@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 进行比较?

我遇到的第二个问题是... } else if (t < t1){ 在 compareTo() 方法中。错误是“二元运算符'<'的错误操作数类型第一种类型:V第二种类型:V”。如果它对两种类型都识别为 V 为什么它是一个错误的操作数?

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

最佳答案

由于 Chrylis、Catalin Pol 和 Louis Wasserman 的共同努力,我了解到我需要将我的类(class)改正为:

public class SortedValueStore<K, V extends Comparable<? super V>> implements PairStore187<K, V>, Iterable<K>, {

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

这成功了。我对 Java 比较陌生,所以我花了一段时间才明白每个人都在说什么,但每个人都坚持不懈地努力。感谢大家的帮助!

关于java - 使用 Comparable 和 Comparator 比较泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20380886/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com