泛型实现传入数组求最大最小值

问题要求

随意传入一个数组,获得最大值和最小值,这个数组可以使用 整数类型 ,字符串类型,字符…

定义算法类

方法: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());
	}

}

4:运行截图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43389959/article/details/83744727
今日推荐