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