定义一个泛型类,定义泛型T,存储咱们的最大值最小值,重载构造函数,存储最大最小值,重写toString方法;
1package person.xsc.practice; 2 3public class Num<T> { 4 //定义最大最小值 5 public T max; 6 public T min; 7 public Num() { 8 } 9 //构造函数(有参) 10 public Num(T max, T min) { 11 this.max = max; 12 this.min = min; 13 } 14 public T getMax() { 15 return max; 16 } 17 public void setMax(T max) { 18 this.max = max; 19 } 20 public T getMin() { 21 return min; 22 } 23 public void setMin(T min) { 24 this.min = min; 25 } 26 @Override 27 public String toString() { 28 return "Num [max=" + max + ", min=" + min + "]"; 29 } 30} 31
定义一个泛型方法比较最大最小值,传入我们的泛型数组
1package person.xsc.practice; 2 3public class GeneralCompareMethod { 4 public <T extends Comparable<T>> Num<T> getMaxMin(T[]num){ 5 T max = num[0]; 6 T min = num[0]; 7 for (int i = 0; i < num.length; i++) { 8 if(max.compareTo(num[i])<0) { 9 max=num[i]; 10 } 11 if(min.compareTo(num[i])>0) { 12 min=num[i]; 13 } 14 } 15 return new Num<T>(max,min); 16 } 17} 18
定义一个studentII类,用于对象数组比较,实现 Comparable接口,并重写compareTo方法。
1package person.xsc.practice; 2 3public class StudentII implements Comparable{ 4 private int number=0; //学号 5 private String name=""; //学生姓名 6 private String gender=""; //性别 7 public StudentII() { 8 9 } 10 public StudentII(int number, String name, String gender) { 11 this.number = number; 12 this.name = name; 13 this.gender = gender; 14 } 15 16 public int getNumber() { 17 return number; 18 } 19 20 public void setNumber(int number) { 21 this.number = number; 22 } 23 24 public String getName() { 25 return name; 26 } 27 28 public void setName(String name) { 29 this.name = name; 30 } 31 32 public String getGender() { 33 return gender; 34 } 35 36 public void setGender(String gender) { 37 this.gender = gender; 38 } 39 40 @Override 41 public String toString() { 42 return "StudentII [number=" + number + ", name=" + name + ", gender=" + gender + "]"; 43 } 44 45 @Override 46 public int compareTo(Object o) { 47 // TODO Auto-generated method stub 48 StudentII student=(StudentII)o; 49 if(this.number==student.number){ 50 return 0; //如果学号相同,那么两者就是相等的 51 }else if(this.number>student.getNumber()){ 52 return 1; //如果这个学生的学号大于传入学生的学号 53 }else{ 54 return -1; //如果这个学生的学号小于传入学生的学号 55 } 56 } 57 58} 59
定义测试类,数组实例化,调用比较大小方法。
1package person.xsc.practice; 2public class NumTest { 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 GeneralCompareMethod gcm=new GeneralCompareMethod(); 6 System.out.println("=======整型数组比较======="); 7 Integer[]integerArray= {1,8,34,13,56}; 8 System.out.println(gcm.getMaxMin(integerArray)); 9 System.out.println("=======字符型数组比较======="); 10 Character[] charArray = { 'H', 'E', 'L', 'L', 'O' }; 11 System.out.println(gcm.getMaxMin(charArray)); 12 System.out.println("=======双精度型数组比较======="); 13 Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 }; 14 System.out.println(gcm.getMaxMin(doubleArray)); 15 System.out.println("=======StudentII对象数组比较======="); 16 StudentII[] stuArray= {new StudentII(1,"张三","男"),new StudentII(5,"李四","男"),new StudentII(2,"夏六","女")}; 17 System.out.println(gcm.getMaxMin(stuArray)); 18 System.out.println("=======字节型数组比较======="); 19 Byte[] byteArray = {'a','b','c','d'}; 20 System.out.println(gcm.getMaxMin(byteArray)); 21 } 22} 23
1=======整型数组比较======= 2Num [max=56, min=1] 3=======字符型数组比较======= 4Num [max=O, min=E] 5=======双精度型数组比较======= 6Num [max=4.4, min=1.1] 7=======StudentII对象数组比较======= 8Num [max=StudentII [number=5, name=李四, gender=男], min=StudentII [number=1, name=张三, gender=男]] 9=======字节型数组比较======= 10Num [max=100, min=97] 11
