泛型课堂练习题

泛型课堂练习题
* 定义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 }

 



posted @ 2022-08-06 22:15  捞月亮的渔夫  阅读(161)  评论(0)    收藏  举报