因此,我正在學習java課程,並且正在學習排序,搜索,算法和泛型。我試圖重新創建一個二分查找方法/類,它接受任何類型的Comparable
對象(如ArrayList < 類型>)。如何在通用程序中實現二進制搜索對象數組?
我明白如何去做int
s,但我真的不知道如何去處理它與非原始類型。 這是我認爲它應該大致是這樣的:
public class Objects<T> implements Comparable //I'm not sure about this,
//but I need to call compareTo() to compare the objects?
{
/**
* called from other program to find an element index in an array
*/
public static int binSearchAll(T find, T array[])
{
return binarySearch(array, 0, (array.length)-1, find);
}
public static int binarySearch(T array[], int lower, int upper, T X)
//x is the element to find
{
if (upper < lower)
return -1;
int middle = (lower + upper)/2;
if (array[middle].compareTo(X))
return middle;
if (array[middle] < X)
return binarySearch(a, middle+1, upper, X);
else
return binarySearch(a, lower, middle-1, X);
}
}
我試圖弄清楚如何使這項工作,但我不知所措。在int
版本中,它可以正常工作,但只適用於integer
類型,並且不會接受double
或string
類型,如問題所述。
,我希望能夠創建一個新的對象,並使用它像這樣:
String[] str = {"a", "b", "c"};
Objects<String> s = new Objects<String>();
int indexOfB = s.binSearchAll("b", str);
或者,如果可能的話,像這樣:
String[] str = {"a", "b", "c"};
int indexOfB = Object<String>.binSearchAll("b", str);
確切措辭的問題是:
創建一個ObjectBinarySearcher類,可以搜索Comparable對象的數組。 在程序中演示該類,該程序在String 對象的數組中搜索字符串。
我幾乎可以肯定,我正在推翻這一點。
感謝您的幫助!
謝謝,我沒有閱讀Comparable類的正確的文檔,現在我工作。我認爲它與Object.equals()方法類似。 – user2005078