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()语句中您只需交换位置即可。
添加回答
举报