<运营商>对于参数类型java.lang.Object,java.lang.Object未定义

时间:2018-06-01 14:17:29

标签: java arrays sorting

public void sort(){
    //TO DO
    int k = start;
    int temp = 0;
    for(int i=0; i<size-1; i++){
          for(int j=0; j<size-1; j++){
                if((cir[(k % cir.length)]) > cir[((k+1) % cir.length)]){
                      temp = cir[(k % cir.length)];
                      cir[k%cir.length] = cir[(k+1)%cir.length];
                      cir[(k+1)%cir.length] = temp;
                }
                k = (k+1)%cir.length;
          }
    }
}

//这里的cir []类型是对象。但为什么会出现这个问题?

2 个答案:

答案 0 :(得分:0)

运营商&lt;,&gt;没有为TypeError: QRCode.drawBitArray is not a function 定义。 你会如何比较它们? 为您正在使用的对象的类定义方法。说Object。然后根据您想要比较的方式实现它。这取决于greaterThan(YourObjectType otherobject)

修改即可。 实现注释中添加的Comparable接口。

答案 1 :(得分:0)

其他人已经提到了它,但我会重申:如果你想写一些通用的排序方法,你想要提供Comparator或者让元素实现Comparable。< / p>

使用泛型,您的方法可能如下所示:

public <T extends Comparable<T>> void sort(T[] array) { ... }
public <T> void sort(T[] array, Comparator<T> comparator) { ... }

这两种变体都要求用户提供一些代码,用于定义如何为相关对象定义<==>(方法Comparable.compareTo(right)或{{ 1}}返回负(通常为-1)int,0或正int(通常为1)以指示Comparator.compare(left, right)<==)。

一般情况下,如果您可以定义自然(默认)排序,则可以使用>,例如如果您与一群人一起工作,他们通常可能会按名称订购。

另一方面,

Comparable更灵活,如果您不能或不想使用默认订单,则通常会使用

Comparator。在这种情况下,您可以为每种情况提供一个比较器,例如:当您想要按价格或速度对汽车进行分类时,您需要提供一个比较器,在内部比较价格或速度。

请注意,这不适用于int等原语。因此,您必须将它们转换为包装类,例如: Integer或提供使用&#34; normal&#34;的自定义方法运算符。