利用泛型定义一数组操作类GenericOperator,操作对象为数值类型数组,其中数值类型包括Integer, Short, Byte, Double, Float等。 在操作类中提供若干静态方法,实现对任意数值类型数组的下述操作, 1. 求平均值 averageValue(T[] t) 2. 求数组最大元素 maxElement(T[] t) 3. 对数组元素采用冒泡方法进行排序 bubbleSort(T[] t) 4. 对数组元素利用选择排序方法进行排序 selectionSort(T[] t) 5. 求两长度相同数组的和(对应元素的和) arraySum(T[] ta, T[] tb) 6. 输出数组元素 print(T[] list) 在此基础上定义测试类,测试各方法功能是否正常
时间: 2023-06-16 13:02:16 浏览: 103
数组的基本操作
```java
public class GenericOperator<T extends Number> {
public static <T extends Number> double averageValue(T[] t) {
double sum = 0;
for (T element : t) {
sum += element.doubleValue();
}
return sum / t.length;
}
public static <T extends Number> T maxElement(T[] t) {
T max = t[0];
for (int i = 1; i < t.length; i++) {
if (t[i].doubleValue() > max.doubleValue()) {
max = t[i];
}
}
return max;
}
public static <T extends Number> void bubbleSort(T[] t) {
int length = t.length;
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - 1 - i; j++) {
if (t[j].doubleValue() > t[j + 1].doubleValue()) {
T temp = t[j];
t[j] = t[j + 1];
t[j + 1] = temp;
}
}
}
}
public static <T extends Number> void selectionSort(T[] t) {
int length = t.length;
for (int i = 0; i < length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < length; j++) {
if (t[j].doubleValue() < t[minIndex].doubleValue()) {
minIndex = j;
}
}
T temp = t[i];
t[i] = t[minIndex];
t[minIndex] = temp;
}
}
public static <T extends Number> T[] arraySum(T[] ta, T[] tb) {
int length = ta.length;
T[] sum = (T[]) new Number[length];
for (int i = 0; i < length; i++) {
sum[i] = (T) (Number) (ta[i].doubleValue() + tb[i].doubleValue());
}
return sum;
}
public static <T> void print(T[] list) {
for (T element : list) {
System.out.print(element + " ");
}
System.out.println();
}
}
```
测试类:
```java
public class Test {
public static void main(String[] args) {
Integer[] intArray = { 5, 2, 7, 3, 9, 1 };
Double[] doubleArray = { 5.6, 2.1, 7.4, 3.9, 9.2, 1.6 };
System.out.println("Average value of intArray: " + GenericOperator.averageValue(intArray));
System.out.println("Average value of doubleArray: " + GenericOperator.averageValue(doubleArray));
System.out.println("Max element of intArray: " + GenericOperator.maxElement(intArray));
System.out.println("Max element of doubleArray: " + GenericOperator.maxElement(doubleArray));
System.out.print("Before bubble sort: ");
GenericOperator.print(intArray);
GenericOperator.bubbleSort(intArray);
System.out.print("After bubble sort: ");
GenericOperator.print(intArray);
System.out.print("Before selection sort: ");
GenericOperator.print(doubleArray);
GenericOperator.selectionSort(doubleArray);
System.out.print("After selection sort: ");
GenericOperator.print(doubleArray);
Integer[] intArray2 = { 1, 2, 3 };
Integer[] intArray3 = { 4, 5, 6 };
Integer[] sum = GenericOperator.arraySum(intArray2, intArray3);
System.out.print("Array sum: ");
GenericOperator.print(sum);
}
}
```
阅读全文