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()語句中您只需交換位置即可。
添加回答
舉報