题意,怎样根据传入的泛型数组比较最大最小值,数组的类型可以是int型,可以是String型,也可以是double型。。。
首先要定义一个泛型类,定义泛型T,存储咱们的最大值最小值,提供公开的方法,重载构造函数,存储咱们的最大最小值;
/**
* 创建泛型类 Num
* @author 15053
*
* @param <T>
*/
public class Num<T> {
//定义最大最小值
private T min;
private T max;
//构造函数
public Num() {
}
public Num(T min, T max) {
super();
this.min = min;
this.max = max;
}
public T getMin() {
return min;
}
public void setMin(T min) {
this.min = min;
}
public T getMax() {
return max;
}
public void setMax(T max) {
this.max = max;
}
/**
* 重写输出字符串
*/
@Override
public String toString() {
return "Num [min=" + min + ", max=" + max + "]";
}
}
然后是定义一个泛型方法比较最大最小值,传入我们的泛型数组
public class Compare{
/**
* 比较最大最小值的泛型方法
* @param num
* @return
*/
//这里必须在public和返回值类型中加入泛型去继承Comparable,不然不好比较
public <T extends Comparable<T>> Num<T> getMaxMin(T[] num) {
//
T max = num[0];
T min = num[0];
//遍历数组,比较出最大最小值
for (int i = 0; i < num.length; i++) {
if (max.compareTo(num[i])<0) {
max=num[i];
}
if(min.compareTo(num[i])>0) {
min= num[i];
}
}
//返回的是Num泛型类的带参构造的对象
return new Num<T>(min,max);
}
}
最后就是进行测试了
public class TestWork extends Num{
public static void main(String[] args) {
Compare ww=new Compare();
//整型数组比较
Integer[] num =new Integer[] {1,2,3,4,5,6};
System.out.println("=======整型数组比较=======");
System.out.println((ww.getMaxMin(num)));
//字符串数组比较
String[] str = new String[] {"aas","sadx","werd","111"};
System.out.println("=======字符串数组比较=======");
System.out.println((ww.getMaxMin(str)));
//Double数组比较
Double[] dou = new Double[] {1.1,2.2,3.3,66.66,8.0};
System.out.println("=======Double数组比较=======");
System.out.println((ww.getMaxMin(dou)));
}
}