3.编写一个泛型方法,能够返回一个int类型数组的最大值和最小值,String类型数组的最大值和最小值(按字典排序)
时间: 2024-11-30 07:19:55 浏览: 18
在Java中,我们可以编写两个泛型方法,一个处理`int`类型的数组,另一个处理`String`类型的数组。这两个方法将分别找到最大值和最小值,并且对于`String`数组,我们还需要按照字母顺序(字典排序)查找最大和最小值。
首先,对于`int`数组,我们可以直接使用内置的`Math.max`和`Math.min`方法:
```java
public class ArrayUtils {
public <T extends Comparable<T>> T[] findMinMax(int[] arr) {
if (arr == null || arr.length == 0) {
throw new IllegalArgumentException("Array cannot be empty");
}
return new T[]{Collections.max(Arrays.asList(arr)), Collections.min(Arrays.asList(arr))};
}
// 类似的,处理String数组时需要先转换为Comparable并排序
public <T extends Comparable<T>> T[] findMinMaxSorted(String[] arr) {
if (arr == null || arr.length == 0) {
throw new IllegalArgumentException("Array cannot be empty");
}
Arrays.sort(arr);
return new T[]{arr[arr.length - 1], arr[0]};
}
}
```
注意:`<T extends Comparable<T>>`意味着方法接受任何实现了`Comparable`接口的数据类型作为输入,这样我们就可以对它们进行排序。
然后在主方法中调用这两个方法:
```java
public static void main(String[] args) {
int[] intArr = {5, 3, 9, 1, 7};
String[] strArr = {"z", "a", "d", "b", "c"};
try {
int[] minMaxInt = ArrayUtils.findMinMax(intArr);
System.out.println("Int array: Min=" + minMaxInt[0] + ", Max=" + minMaxInt[1]);
String[] minMaxStr = ArrayUtils.findMinMaxSorted(strArr);
System.out.println("String array (sorted): Min=" + minMaxStr[0] + ", Max=" + minMaxStr[1]);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
```
阅读全文