java中如何使用泛型方法比较大小
作者:奋斗的小虾米
这篇文章主要介绍了java中如何使用泛型方法比较大小,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
题意
怎样根据传入的泛型数组比较最大最小值,数组的类型可以是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 + "]"; } }
定义一个泛型方法比较最大最小值
传入我们的泛型数组
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); } }
最后就是进行测试了
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))); } }
测试的结果
如图:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。