Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Collections.binarySearch返回负整数_Java - Fatal编程技术网

Java Collections.binarySearch返回负整数

Java Collections.binarySearch返回负整数,java,Java,以下代码未正确搜索。。。 请尽快帮助我 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; class Car{ public int speed; public Car(int speed){ this.speed = speed; } } class Compare implements Comparator<Car&

以下代码未正确搜索。。。 请尽快帮助我

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

class Car{

    public int speed;

    public Car(int speed){
        this.speed = speed;
    }
}

class Compare implements Comparator<Car>{

    public int compare(Car C1, Car C2) {

        if(C1.speed < C2.speed)
            return -1;
        else
            return 1;

    }

}

public class Main{  
    public static void main(String[] args){

        Car c ;

        ArrayList<Car> a = new ArrayList<Car>();

        for(int i = 0 ; i < 5 ; i++){
                a.add(new Car(i));
        }

        Collections.sort(a, new Compare());

        System.out.println(Collections.binarySearch(a, new Car(0), new Compare()));

    }
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
班车{
公共交通速度;
公共汽车(国际速度){
速度=速度;
}
}
类比较实现比较器{
公共int比较(车辆C1、车辆C2){
如果(C1.速度

我得到的输出是一些负数。

您的比较器不正确。如果两辆车的速度相同,它应该返回0

按照编码,如果A的速度与B相同,
A>B
如果使用
compare(A,B)
,如果使用
compare(B,A)
,则
B>A
,这显然违反了比较器契约


由于比较器从未将一辆车视为与另一辆车相等,因此binarySearch从未找到任何与所搜索的车相等的车,因此它会返回负值,如文件所述。

因为在比较方法中没有返回0的条件。是的,这是错误的。非常感谢。