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的条件。是的,这是错误的。非常感谢。