1 回答
TA貢獻1834條經驗 獲得超8個贊
getArea()您正在嘗試調用對象的方法ArrayList<>。然而,該類ArrayList<>沒有這樣的方法。無法撥打電話
R elem = list.getArea();
當list是 類型時ArrayList<>。
實際上,您根本不需要調用getArea()冒泡排序方法。冒泡排序方法只關心列表中是否包含實現該Comparable接口的對象。您的方法聲明應更改為:
public static <R extends Comparable <R>> void bubbleSort(ArrayList<R> list)
這樣你就可以說:“列表必須包含通用類型的對象R,其中類R實現了Comparable<R>接口”。當您在腦海中替換R為您的Rectangle班級時,您會發現您的班級Rectangle implements Comparable<Rectangle>符合該要求。
在您的冒泡排序方法中,您不再使用該getArea()方法(您不能),而只能使用來自 的方法以及接口提供的ArrayList<>方法。您的代碼應如下所示:compareTo()Comparable<>
public static <R extends Comparable <R>> void bubbleSort(ArrayList<R> list) {
for (int k = 1; k < list.size();k++) {
for (int i = 0; i <list.size()-k; i++) {
R elem = list.get(i);
R elem2 = list.get(i+1);
if (elem.compareTo(elem2) > 0) {
list.set(i, elem2);
list.set(i+1, elem);
}
}
printList(list);
}
}
您正在使用get(i)和get(i+1)來獲取您想要檢查的對。然后在if()語句中您只需交換位置即可。
添加回答
舉報
