1.题意,怎样根据传入的泛型数组比较最大最小值,数组的类型可以是int型,可以是String型,也可以是double型。。。
首先要定义一个泛型类,定义泛型T,存储咱们的最大值最小值,提供公开的方法,重载构造函数,存储咱们的最大最小值;
package demo.com.fanxing;
public class Num<T> {
//定义最大最小值
public T max;
public T min;
//构造函数(无参)
public Num() {
super();
}
//构造函数(有参)
public Num(T max, T min) {
super();
this.max = max;
this.min = min;
}
public T getMax() {
return max;
}
public void setMax(T max) {
this.max = max;
}
public T getMin() {
return min;
}
public void setMin(T min) {
this.min = min;
}
/**
* 重写输出字符串
*/
@Override
public String toString() {
return "Num [max=" + max + ", min=" + min + "]";
}
}
2.然后是定义一个泛型方法比较最大最小值,传入我们的泛型数组
package demo.com.fanxing;
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>(max,min);
}
}
3.最后就是进行测试了
package demo.com.fanxing;
public class TestWork extends Num {
public static void main(String[] args) {
Compare compare=new Compare();
//整型数组比较
Integer[] num ={22,2,99,9,5,6};
System.out.println("=======整型数组比较=======");
System.out.println((compare.getMaxMin(num)));
//字符串数组比较
String[] str = new String[] {"aas","sadx","werd","111"};
System.out.println("=======字符串数组比较=======");
System.out.println((compare.getMaxMin(str)));
//Double数组比较
Double[] dou = new Double[] {1.1,2.2,3.3,66.66,8.0};
System.out.println("=======Double数组比较=======");
System.out.println((compare.getMaxMin(dou)));
}
}
4.测试的结果如图: