问题要求
随意传入一个数组,获得最大值和最小值,这个数组可以使用 整数类型 ,字符串类型,字符…
定义算法类
方法:public <T extends Comparable> Num getManMin(T[] objs){
实现提取
}
1:定义最大最小的值的类
/**
* 最大最小的值
* @author
*
* @param <T>
*/
public class MaxMin<T> {
private T max;// 最大值
private T min;// 最小值
public T getMax() {
return max;
}
public T getMin() {
return min;
}
public void setMax(T max) {
this.max = max;
}
public void setMin(T min) {
this.min = min;
}
@Override
public String toString() {
return "MaxMin [max=" + max + ", min=" + min + "]";
}
}
2:获得最大最小值的类
/**
* 这是获得最大最小值的类
* @author
*
*/
public class DemoMaxMin {
// 方法
// 传入的参数为泛型的一个数组
// 类型为T并且继承Comparable,只是去使用它,所以使用接口
public <T extends Comparable<T>> MaxMin<T> getManMin(T[] objs){
MaxMin<T> mm=new MaxMin<T>();
// 第一步需要判断传入的是不是null
if(objs==null || objs.length==0) {
return null;
}
// 求最大最小值的方法
// 先赋值
mm.setMax(objs[0]);
mm.setMin(objs[0]);
for(T t:objs) {
//我们只要比当前最大值大的值,其他的可以不用管
if(mm.getMax().compareTo(t)<0) {
mm.setMax(t);
}
if(mm.getMin().compareTo(t)>0) {
mm.setMin(t);
}
}
return mm;
}
}
3:测试类(只测试了整形和字符串类型的数组)
/**
* 测试
* @author
*
*/
public class Test_MaxMin {
public static void main(String[] args) {
// 实例化
DemoMaxMin dmm=new DemoMaxMin();
// 创建一个字符串的数组
String[] strs= {"g","c","b","x","v"};
//调用方法
MaxMin<String> mm=dmm.getManMin(strs1);
System.out.println(mm.toString());
// 创建一个整形的数组测试
Integer[] strs2= {1,2,3,4,5,6};
MaxMin<Integer> mm1=dmm.getManMin(strs2);
System.out.println(mm1.toString());
}
}