我需要在自定義對象數組上使用Arrays.binarySearch。這裏是對象:Java Arrays.binarySearch with compareTo
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;
}}
以我主我第一呼叫Arrays.sort(lowerBounds);
其中lowerBounds是範圍元件的陣列。這工作得很好,並使用我寫的compareTo進行排序。然後我打電話Arrays.binarySearch(lowerBounds, 0)
,但我得到「線程中的異常」主「java.lang.ClassCastException:java.lang.Integer不能轉換爲compareToTest.Range」。
我在做什麼錯?謝謝。
編輯:這裏是主要的:
public static void main(String[] args)
{
int[] A = {1, 5, 2, 1, 4, 0};
// write your code in Java SE 6
Range[] lowerBounds = new Range[A.length];
for(int i=0; i< A.length; i++)
{
lowerBounds[i] = new Range(i-A[i], i+A[i]);
}
Arrays.sort(lowerBounds);
for(int i=0; i< A.length; i++)
{
System.out.println(lowerBounds[i].bottom);
}
System.out.println(Arrays.binarySearch(lowerBounds, 0));
}
在哪裏'的main()'-code?但我的猜測是嘗試'Arrays.binarySearch(lowerBounds,new Range(0,0));'作爲關鍵對象(第二個參數)與您傳遞的數組的類型相同。 –
'binarySearch'的第二個參數是要搜索的值,因此它不應該是一個int值,而應該是'Range'對象。 – jCoder