1 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
getArea()
您正在嘗試調(diào)用對(duì)象的方法ArrayList<>
。然而,該類ArrayList<>
沒有這樣的方法。無法撥打電話
R elem = list.getArea();
當(dāng)list
是 類型時(shí)ArrayList<>
。
實(shí)際上,您根本不需要調(diào)用getArea()
冒泡排序方法。冒泡排序方法只關(guān)心列表中是否包含實(shí)現(xiàn)該Comparable
接口的對(duì)象。您的方法聲明應(yīng)更改為:
public static <R extends Comparable <R>> void bubbleSort(ArrayList<R> list)
這樣你就可以說:“列表必須包含通用類型的對(duì)象R
,其中類R
實(shí)現(xiàn)了Comparable<R>
接口”。當(dāng)您在腦海中替換R
為您的Rectangle
班級(jí)時(shí),您會(huì)發(fā)現(xiàn)您的班級(jí)Rectangle implements Comparable<Rectangle>
符合該要求。
在您的冒泡排序方法中,您不再使用該getArea()
方法(您不能),而只能使用來自 的方法以及接口提供的ArrayList<>
方法。您的代碼應(yīng)如下所示: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)來獲取您想要檢查的對(duì)。然后在if()語句中您只需交換位置即可。
添加回答
舉報(bào)