我正在构建之前的程序,该程序使用排序算法对数组中的整数进行排序。
我现在的任务是创建一个矩形的 ArrayList,创建一个扩展 Comparable 接口的 Rectangle 类,并在我的排序方法中实现泛型。
最后,程序需要对给定的 10 个不同矩形的面积值进行计算和排序。
我遇到的问题是,我不确定如何修改排序算法来实现泛型,并使用我在 Rectangle 类中创建的compareTo
/方法。getArea
我对所有这些概念都相当陌生,所以我的理解是有限的。
以下是我如何创建 10 个矩形的 ArrayList 的片段(按降序值排列):
public static void main(String[] args) {
ArrayList<Rectangle> list = new ArrayList<>();
for (int i=10;i>=1;i--) {
Rectangle rectangle = new Rectangle((i+5)*2,(i+7)*6);
list.add(rectangle);
}
...
}
这是我的 Rectangle 类,它扩展了 Comparable 接口并具有重写的 CompareTo 方法:
class Rectangle implements Comparable<Rectangle> {
double width=1;
double height=1;
public Rectangle() { }
public Rectangle(double recWidth, double recHeight) {
this.width = recWidth;
this.height = recHeight;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getArea() {
return width * height;
}
@Override
public int compareTo(Rectangle r) {
if (getArea() > r.getArea()) {
return 1;
}
else if (getArea()<r.getArea()) {
return -1;
}
else {
return 0;
}
}
...
}
这是我目前的冒泡排序方法,该方法不再起作用。
public static <R extends Comparable <Rectangle>> void bubbleSort(ArrayList<Rectangle> list) {
for (int k = 1; k < list.size();k++) {
for (int i = 0; i <list.size()-k; i++) {
R elem = list.getArea();
R elem2 = list.getArea(i+1);
if (elem.compareTo(elem2) >= 1) {
R temp = list.get(i);
list.set(i, list.get(i+1));
list.set(i+1, temp);
}
}
printList(list);
}
MMMHUHU
相关分类