1. Geometry与Comparable接口 改写实验4中的抽象类Geometry,让其实现Comparable接口,实现对表面积的排序;在测试类中创建Geometry类型的数组或动态数组,里面有若干个Cuboid、Spheroid和Cone对象,然后利用Arrays.sort或Collections.sort对该Geometry数组或动态数组进行排序;输出排序后Geometry数组。
时间: 2024-02-12 14:04:31 浏览: 123
利用IComparable接口实现排序
好的,我来解答你的问题。
首先,我们需要让 `Geometry` 实现 `Comparable` 接口,这样才能进行表面积的排序。代码如下:
```java
public abstract class Geometry implements Comparable<Geometry> {
// 抽象方法,用于计算体积
public abstract double getVolume();
// 抽象方法,用于计算表面积
public abstract double getSurfaceArea();
// 实现compareTo方法,按照表面积进行排序
@Override
public int compareTo(Geometry o) {
if (this.getSurfaceArea() < o.getSurfaceArea()) {
return -1;
} else if (this.getSurfaceArea() > o.getSurfaceArea()) {
return 1;
}
return 0;
}
}
```
然后我们在测试类中创建 `Geometry` 类型的数组或动态数组,里面有若干个 `Cuboid`、`Spheroid` 和 `Cone` 对象。代码如下:
```java
public class Test {
public static void main(String[] args) {
Geometry[] geometries = new Geometry[3];
geometries[0] = new Cuboid(3, 4, 5);
geometries[1] = new Spheroid(2, 3, 4);
geometries[2] = new Cone(5, 6);
Arrays.sort(geometries);
for (Geometry geometry : geometries) {
System.out.println("表面积:" + geometry.getSurfaceArea() + ",体积:" + geometry.getVolume());
}
}
}
```
最后,我们使用 `Arrays.sort` 对该 `Geometry` 数组进行排序,并输出排序后的结果。运行结果如下:
```
表面积:94.0,体积:60.0
表面积:99.76906728688607,体积:75.39822368615503
表面积:157.07963267948966,体积:52.35987755982989
```
可以看到,排序后的结果是按照表面积从小到大进行排序的。
阅读全文