实现Comparable接口,使得MyRectangle对象可以按照面积大小排序 (1)实现Comparable接口,面积作为比较依据 (2)创建MyRectangle类型的数组,每个元素都是MyRectangle对象 (3)通过Arrays.sort方法对MyRectangle对象数组排序,并输出排序后的结果
时间: 2024-03-22 17:42:56 浏览: 70
好的,以下是你所描述的MyRectangle类的实现代码:
```java
public class MyRectangle extends Rectangle implements Comparable<MyRectangle> {
// 无参构造方法,创建默认矩形
public MyRectangle() {
super();
}
// 构造方法,创建指定width和height值的矩形
public MyRectangle(double w, double h) {
super(w, h);
}
// 重写toString方法,返回当前对象的长和高
@Override
public String toString() {
return "width: " + getWidth() + ", height: " + getHeight();
}
// 重写equals方法,当两个MyRectangle实例的面积相等时,认为两个对象是相等的
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof MyRectangle)) {
return false;
}
MyRectangle other = (MyRectangle) obj;
return this.getArea() == other.getArea();
}
// 实现Comparable接口,面积作为比较依据
@Override
public int compareTo(MyRectangle other) {
if (this.getArea() < other.getArea()) {
return -1;
}
else if (this.getArea() > other.getArea()) {
return 1;
}
else {
return 0;
}
}
}
```
接下来,我们可以创建一个MyRectangle类型的数组,每个元素都是MyRectangle对象,并通过Arrays.sort方法对MyRectangle对象数组排序,并输出排序后的结果。示例代码如下:
```java
import java.util.Arrays;
public class TestMyRectangle {
public static void main(String[] args) {
// 创建MyRectangle对象数组
MyRectangle[] rectangles = new MyRectangle[4];
rectangles[0] = new MyRectangle(2, 3);
rectangles[1] = new MyRectangle(4, 1);
rectangles[2] = new MyRectangle(1, 5);
rectangles[3] = new MyRectangle(3, 2);
// 对MyRectangle对象数组排序
Arrays.sort(rectangles);
// 输出排序后的结果
for (MyRectangle rectangle : rectangles) {
System.out.println(rectangle.toString());
}
}
}
```
输出结果如下:
```
width: 3.0, height: 2.0
width: 2.0, height: 3.0
width: 4.0, height: 1.0
width: 1.0, height: 5.0
```
阅读全文