首页 > 其他分享 >练习——泛型小练

练习——泛型小练

时间:2023-04-23 20:23:15浏览次数:30  
标签:return name int MyDate 练习 小练 泛型 new public

package com.generic;

import java.util.ArrayList;
import java.util.Comparator;

/*
定义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相同,则按生日日期的先后排序。【即:定制排序】

 */

@SuppressWarnings({"all"})
public class GenericExercise {
    public static void main(String[] args) {

        ArrayList<Employee> employees = new ArrayList<>();
        employees.add(new Employee("tom", 10000,new MyDate(2000,1,3)));
        employees.add(new Employee("qiu", 12000,new MyDate(2001,2,7)));
        employees.add(new Employee("jack", 16000,new MyDate(1999,5,3)));
        employees.add(new Employee("jack", 16000,new MyDate(1939,5,3)));
        employees.add(new Employee("jack", 16000,new MyDate(1939,2,3)));
        employees.add(new Employee("jack", 16000,new MyDate(1939,2,1)));
        System.out.println(employees);


        employees.sort(new Comparator<Employee>() {
            @Override
            public int compare(Employee emp1, Employee emp2) {
                if (!(emp1 instanceof Employee && emp2 instanceof Employee)){
                    System.out.println("===输入数据格式不正确===");
                    return 0;
                }
                int i = emp1.getName().compareTo(emp2.getName());
                if (i != 0){
                    return i;
                }
                /*
                int yearMinus = emp1.getBirthday().getYear() - emp2.getBirthday().getYear();
                if (yearMinus != 0){
                    return yearMinus;
                }
                int monthMinus = emp1.getBirthday().getMonth() - emp2.getBirthday().getMonth();
                if (monthMinus != 0){
                    return monthMinus;
                }
                return emp1.getBirthday().getDay() - emp2.getBirthday().getDay();
                */

                //封装一下MyDate的比较操作
                int comparea01 = emp1.getBirthday().compareTo(emp2.getBirthday());

                return comparea01;


            }
        });
        System.out.println("===排序后结果===");
        System.out.println(employees);


    }
}

class Employee{
    private String name;
    private double sal;
    private MyDate birthday;

    public Employee(String name, double sal, MyDate birthday) {
        this.name = name;
        this.sal = sal;
        this.birthday = birthday;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSal() {
        return sal;
    }

    public void setSal(double sal) {
        this.sal = sal;
    }

    public MyDate getBirthday() {
        return birthday;
    }

    public void setBirthday(MyDate birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "\n" + "Employee{" +
                "name='" + name + '\'' +
                ", sal=" + sal +
                ", birthday=" + birthday +
                '}';
    }
}

class MyDate implements Comparable<MyDate>{
    private int year;
    private int month;
    private int day;

    public MyDate(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }

    @Override
    public String toString() {
        return "MyDate{" +
                "year=" + year +
                ", month=" + month +
                ", day=" + day +
                '}';
    }

    @Override
    public int compareTo(MyDate o) {
        int yearMinus = year - o.year;
        if (yearMinus != 0){
            return yearMinus;
        }
        int monthMinus = month - o.month;
        if (monthMinus != 0){
            return monthMinus;
        }
        return day - o.day;
    }
}

标签:return,name,int,MyDate,练习,小练,泛型,new,public
From: https://www.cnblogs.com/Q1u-ovo/p/17347622.html

相关文章

  • 平时练习
    CRUD代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content=&......
  • Java 静态泛型方法为什么要在返回值之前使用泛型
    静态方法定义静态泛型方法要在返回值之前使用泛型声明此方法为泛型方法:/***泛型方法的基本介绍*@paramtClass传入的泛型实参*@returnT返回值为T类型*说明:*1)public与返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。......
  • java基础-泛型(七)
    泛型:jdk1.5版本以后出现的一个安全机制。表现格式:<>好处:1:将运行时期的问题ClassCastException问题转换成了编译失败,体现在编译时期,程序员就可以解决问题。2:避免了强制转换的麻烦。 只要带有<>的类或者接口,都属于带有类型参数的类或者接口,在使用这些类或者接口时,必须给<>中传递一......
  • Java泛型
    Java泛型概念Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型安全。Java泛型的核心思想是类型参数化,即在类、接口或方法的定义中使用类型参数来代替具体的类型,这些类型参数在实例化时被具体......
  • 《面试1v1》java泛型
    我是javapub,一名Markdown程序员从......
  • 牛客练习赛110
    A.嘤嘤的签到双指针+算贡献用cnt[]来记录当前维护区间1和4的数量,当当前区间不满足要求则移动左指针直到满足要求,再加上贡献即可。当然也可以记录最后的1和4的位置,这样他们位置中较小的那一个的后一个位置就是能满足要求的区间的最左端的左指针,但是该方法就没上一个那么通用了......
  • mysql综合练习题
    作业1第一题D错误。别名有空格要用“”都引起来第三题别名和之前的列名都可以使用作业2SELECT*FROMempSELECT*FROMdeptSELECT*FROMsalgrade--作业2--2.查看dept表和emp表的结构DESCdept;DESCemp;--3.1显示所有部门的名称SELECTdnameFROMd......
  • Linux练习题
    61.(多选题)社区发行版的特点包括A.厂商主导的开发B.采用开放开发模式C.社区开发者主导的开发D.由厂商提供支持和服务正确答案:62.(多选题)下面属于国际类别开源许可证(Internationallicenses)的是A.ApacheLicense2.0B.MulanPSLv2C.ServerSidePublicLicenseD.......
  • 团体天梯练习 L3-008 喊山
    L3-008喊山喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价......
  • 每日练习总结
    昨天我学习了关于web调用其他公司接口进行排班的实际案例今天我从github上找到了一个关于日历算法实现智能排班的代码实例,并且进行了相关的研究遇到的问题:如果调用其他公司接口,我们需要付费使用,成本过高,不现实。在研究日历算法时发现他们用ts文件实现的日历算法,我们电脑的环境配......