所以我有以下方法改變一個方法的簽名
public static <T extends Comparable<? super T>> void bubbleSort(T[] a)
//public static void bubbleSort(Comparable[] a)
{
for(int top = a.length-1; top > 0; top--)
for(int i = 0; i < top; i++)
if(a[i+1].compareTo(a[i]) < 0)
{ T tmp = a[i];
//Comparabl tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
我怎樣才能改變方法簽名,以便能夠從一些這樣稱呼它
public int sortByTitle()
{
return Sorting.bubbleSort(lib); // (lib is lib = new ArrayList<Object>();
}
,我不能使用收集方法或比較對象。
我收到以下編譯消息錯誤:方法bubbleSort在類Sorting不能應用於給定的類型; required:T [] found:java.util.List
@valentin:正如我的回答中所述,不能傳遞整個對象數組,因爲Object類沒有實現Comparable接口,這是您的冒泡排序機制需要的東西,工作。正如我在答案中所建議的,您將需要使用實現「Comparable」接口的不同數據類型。一旦你這樣做,你應該能夠得到它的工作。 (請注意我提出的其他建議) – npinti
但是,如果我使用像你所建議的數組列表,那是不是意味着我必須使用列表方法來獲取像top和bottom這樣的東西來貫穿它呢?我正在尋找一些不能使用集合方法或比較對象的東西......有點困惑:( – valentin