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)));
}
}测试的结果
如图:

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
