Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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 Arrays.binarySearch与compareTo_Java_Arrays_Sorting_Object - Fatal编程技术网

Java Arrays.binarySearch与compareTo

Java Arrays.binarySearch与compareTo,java,arrays,sorting,object,Java,Arrays,Sorting,Object,我需要在自定义对象数组上使用Arrays.binarySearch。以下是对象: class Range implements Comparable<Range>{ public int bottom; public int top; public Range(int botIn, int topIn) { this.bottom = botIn; this.top = topIn; } @Override public int compareTo(Range

我需要在自定义对象数组上使用Arrays.binarySearch。以下是对象:

class Range implements Comparable<Range>{

public int bottom;
public int top;

public Range(int botIn, int topIn) {
    this.bottom = botIn;
    this.top = topIn;
}

@Override
public int compareTo(Range compareRange) {
    int compareQuantity = ((Range) compareRange).bottom; 
    return this.bottom - compareQuantity;
}}

array.binarySearch
接受两个参数—要搜索的数组和要查找的对象。您提供了一个
Range
对象数组和一个
int
(该数组自动装箱为
整数)。当然,您不能在
范围
s的数组中搜索
整数

相反,您应该创建要查找的
范围
对象。例如:

Range r = new Range (0, 0);
Arrays.binarySearch (lowerBounds, r);
Arrays.binarySearch(lowerBounds,0)错误,因为您正在比较范围对象。因此,您需要传递一个范围对象,而不是一个整数对象,这将导致java.lang.ClassCastException:java.lang.Integer无法转换为compareToTest.Range“

您需要创建一个RangeObject并在binarySearch方法中传递它

Range r = new Range(0,<any integer>)
Arrays.binarySearch (lowerBounds, r);
Range r=新范围(0,)
Arrays.binarySearch(lowerBounds,r);

main()
-code在哪里?但我猜应该试试
数组。二进制搜索(lowerBounds,new Range(0,0));
作为键对象(第二个参数)必须与传入的数组的类型相同。
binarySearch
的第二个参数是要搜索的值,因此它不应该是int,而应该是
Range
对象。
Range r = new Range(0,<any integer>)
Arrays.binarySearch (lowerBounds, r);