泛型课堂练习题
泛型课堂练习题
* 定义Employee类
* 1)该类包含:private成员变量name,sal,birthday,其中 birthday为MyDate类的对
* 象;
* 2)为每一个属性定义 getter,setter方法;
* 3)重写toString方法输出name,sal,birthday
* 4)MyDate类包含:private成员变量month,day,year;并为每一个属性定义getter,.
* setter方法;
* 5)创建该类的3个对象,并把这些对象放入ArrayList集合中(ArrayList需使用泛
* 型来定义),对集合中的元素进行排序,并遍历输出:
* 排序方式:调用ArrayList的sort方法,传入Comparator对象[使用泛型],先按照
* name排序,如果name相同,则按生日日期的先后排序。【即:定制排序】
1 package generic; 2 3 import java.util.ArrayList; 4 import java.util.Comparator; 5 6 /** 7 * 泛型课堂练习题 8 * 定义Employee类 9 * 1)该类包含:private成员变量name,sal,birthday,其中 birthday为MyDate类的对 10 * 象; 11 * 2)为每一个属性定义 getter,setter方法; 12 * 3)重写toString方法输出name,sal,birthday 13 * 4)MyDate类包含:private成员变量month,day,year;并为每一个属性定义getter,. 14 * setter方法; 15 * 5)创建该类的3个对象,并把这些对象放入ArrayList集合中(ArrayList需使用泛 16 * 型来定义),对集合中的元素进行排序,并遍历输出: 17 * 排序方式:调用ArrayList的sort方法,传入Comparator对象[使用泛型],先按照 18 * name排序,如果name相同,则按生日日期的先后排序。【即:定制排序】 19 */ 20 public class GenericExcise { 21 public static void main(String[] args) { 22 //创建集合 23 ArrayList<Employee> arrayList = new ArrayList<>(); 24 //添加元素到集合中去 25 arrayList.add(new Employee("smith",15000,new MyDate(2020,6,6))); 26 arrayList.add(new Employee("jack",20000,new MyDate(2015,6,7))); 27 arrayList.add(new Employee("jack",10000,new MyDate(1990,6,9))); 28 System.out.println("======对雇员进行排序======="); 29 System.out.println(arrayList); 30 31 arrayList.sort(new Comparator<Employee>() { 32 @Override 33 public int compare(Employee o1, Employee o2) { 34 //先按照name进行排序,如果name相同,则按照生日进行先后排序 35 if (!(o1 instanceof Employee && o2 instanceof Employee)){ 36 System.out.println("类型不匹配....."); 37 return 0; 38 } 39 //比较name 40 int i = o1.getName().compareTo(o2.getName()); 41 if (i!=0){ 42 return i; 43 } 44 //if name相同,就比较birthday-year 45 int yearMinus = o1.getBirthday().getYear()-o2.getBirthday().getYear(); 46 if (yearMinus!=0){ 47 return yearMinus; 48 } 49 //如果year相同,就比较month 50 int monthMinus =o1.getBirthday().getMonth()-o2.getBirthday().getMonth(); 51 if (monthMinus!=0){ 52 return monthMinus; 53 } 54 //如果year和month相同 55 return o1.getBirthday().getDay()-o2.getBirthday().getDay(); 56 } 57 }); 58 System.out.println("=====排序后的结果======"); 59 System.out.println(arrayList); 60 } 61 }
想多了都是问题,做多了才是答案

浙公网安备 33010602011771号