Program:

修改项目三(1)中的第3题,实现比较方法,将对象数组的数据按照生日的大小给职工排序。

Description:令日期类MyDate和员工类Worker类实现接口Comparable,并实现方法compareTo()

代码如下:

MyDate类:

 1 /*
2 * Description:定义日期时间类,实现Comparable接口
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 *
9 * */
10
11 package entity;
12
13
14 public class MyDate implements Comparable<MyDate> {
15
16 private String year; //年
17 private String month; //月
18 private String day; //日
19
20
21 public MyDate() {
22
23 }
24
25 public MyDate(String year,String month,String day) {
26
27 this.year = year;
28 this.month = month;
29 this.day = day;
30 }
31
32
33 //定义setter和getter方法
34 public String getYear() {
35 return year;
36 }
37
38 public void setYear(String year) {
39 this.year = year;
40 }
41
42 public String getMonth() {
43 return month;
44 }
45
46 public void setMonth(String month) {
47 this.month = month;
48 }
49
50 public String getDay() {
51 return day;
52 }
53
54 public void setDay(String day) {
55 this.day = day;
56 }
57
58 //覆写toString()方法
59 public String toString() {
60 return this.year + "年" + this.month + "月" + this.day + "日";
61 }
62
63
64 //实现Comparable接口的compareTo()方法
65 @Override
66 public int compareTo(MyDate temp) {
67
68 //将对象的日期连接成时间戳一起比较
69 String str1 = this.year + this.month + this.day;
70 String str2 = temp.getYear() + temp.getMonth() + temp.getDay();
71
72 //直接调用String类的compareTo()方法,按字符串从小到大排序
73 return str1.compareTo(str2);
74 }
75
76 }

Worker类:

  1 /*
2 * Description:定义职工类,实现Comparable接口
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-18
7 *
8 *
9 * */
10
11 package entity;
12
13 import entity.MyDate;
14
15 public class Worker implements Comparable<Worker> {
16
17 String workerId;   //职工号
18 String workerName; //职工姓名
19 String workerSex; //职工性别
20 String workerPartment; //职工部门
21 MyDate workerBirthday; //职工生日
22 MyDate workerBeginDate; //职工开始工作时间
23
24
25 //定义构造方法
26 public Worker() {
27
28 }
29
30 public Worker(String id,String name,String sex,String partment,MyDate birthday,MyDate beginDate) {
31
32 this.workerId = id;
33 this.workerName = name;
34 this.workerSex = sex;
35 this.workerPartment = partment;
36 this.workerBirthday = birthday;
37 this.workerBeginDate = beginDate;
38 }
39
40
41 //定义setter和getter方法
42 public String getWorkerId() {
43 return workerId;
44 }
45
46 public void setWorkerId(String workerId) {
47 this.workerId = workerId;
48 }
49
50 public String getWorkerName() {
51 return workerName;
52 }
53
54 public void setWorkerName(String workerName) {
55 this.workerName = workerName;
56 }
57
58 public String getWorkerSex() {
59 return workerSex;
60 }
61
62 public void setWorkerSex(String workerSex) {
63 this.workerSex = workerSex;
64 }
65
66 public String getWorkerPartment() {
67 return workerPartment;
68 }
69
70 public void setWorkerPartment(String workerPartment) {
71 this.workerPartment = workerPartment;
72 }
73
74 public MyDate getWorkerBirthday() {
75 return workerBirthday;
76 }
77
78 public void setWorkerBirthday(MyDate workerBirthday) {
79 this.workerBirthday = workerBirthday;
80 }
81
82 public MyDate getWorkerBeginDate() {
83 return workerBeginDate;
84 }
85
86 public void setWorkerBeginDate(MyDate workerBeginDate) {
87 this.workerBeginDate = workerBeginDate;
88 }
89
90 //覆写toString方法
91 @Override
92 public String toString() {
93 return "Worker [workerId=" + workerId + ", workerName=" + workerName
94 + ", workerSex=" + workerSex + ", workerPartment="
95 + workerPartment + ", workerBirthday=" + workerBirthday
96 + ", workerBeginDate=" + workerBeginDate + "]";
97 }
98
99 //实现接口中compareTo()方法,按照出生日期,从大到小排序
100 @Override
101 public int compareTo(Worker temp) {
102
103 return this.getWorkerBirthday().compareTo(temp.getWorkerBirthday());
104 }
105
106 }

TestDemo类:

 1 /*
2 * Description:定义测试类,模拟十个职工的单位,并且排序
3 *
4 * Written By:Cai
5 *
6 * Date Written:2017-10-09
7 *
8 * */
9
10 package main;
11
12 import entity.*;
13
14 public class TestDemo {
15
16 public static void main(String args[]) {
17
18 Worker[] workers = new Worker[10]; //声明Worker类数组对象,大小为10
19
20 //为数组对象依次赋值
21 for( int i = 0; i < 10; i++ ) {
22
23 workers[i] = new Worker("00000" + i,"worker_" + i,"男","办公室" + i,new MyDate("199" + (9-i), ((9-i)) + "",((9-i)) + "" ),
24 new MyDate("200" + i, (i+1) + "",(i+1) + "" ));
25 }
26
27 //对数组按照排序:按照生日由大到小排序
28 java.util.Arrays.sort(workers);
29
30 //打印数组对象
31 display(workers);
32
33 }
34
35 //定义方法,打印Worker类的数组对象信息
36 public static void display(Worker[] workers) {
37
38 for( int i = 0; i < workers.length; i++ ) {
39 System.out.println( workers[i] );
40 }
41 }
42
43 }

Java实验项目三——职工类对象数组按照职工生日排序的更多相关文章

  1. Java实验项目三——面向对象定义职工类和日期类

    Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...

  2. Java实验项目六——使用DAO模式实现对职工表的操作

    Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...

  3. Java实验项目三——简单工厂模式

    Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽 ...

  4. Java实验项目三——采用面向对象的方式设计线性表

    Program: 采用面向对象的方法设计一个线性表,目的是为其他需要用线性表的应用提供线性表对象. 1.list包中,定义线性表类 1 /* 2 * Description:定义线性表类 3 * 4 ...

  5. Java实验项目三——编程实现Person类,学生类的设计及其继承关系

    Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...

  6. Java实验项目三——宠物商店

    Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...

  7. Java实验项目三——平面图形和立体图形抽象类

    Program:按照下面要求完成类的设计 (1)设计一个平面图形抽象类和一个立体图形抽象类,提供该类对象公共的方法和属性. (2)修改项目三中第2题中所设计的球类.圆柱类,圆锥类.矩形类.三角形类.圆 ...

  8. Java实验项目三——递归实现字符串查找和替换操作

    Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...

  9. 20135231 JAVA实验报告三:敏捷开发与XP实践

    ---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...

随机推荐

  1. Nginx下配置Https 配置文件(vue)

    #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  2. Windows 10正式版官方原版镜像!(备忘)

    本文搜集整理微软官方发布的Windows 10正式版镜像下载链接,从RTM原始正式版开始,按照时间倒序排列,即越往上的越新. 注意:以下资源均来自于微软官方原版,ed2k可视为P2P下载链接.下载完成 ...

  3. Python函数装饰器高级用法

    在了解了Python函数装饰器基础知识和闭包之后,开始正式学习函数装饰器. 典型的函数装饰器 以下示例定义了一个装饰器,输出函数的运行时间: 函数装饰器和闭包紧密结合,入参func代表被装饰函数,通过 ...

  4. Zabbix企业分布式监控工具

    前言:在工作中常常需要对服务器进行监控,但是要选择一款合适监控软件可不容易,今天介绍下zabbix这款监控软件 一.Zabbix介绍1.Zabbix是一个企业级的.开源的.分布式的监控套件2.Zabb ...

  5. IDEA debug ConcurrentLinkedQueue时抽风

    1. 介绍 如标题所见,我在使用IDEA debug ConcurrentLinkedQueue的Offer方法时,发生了下面的情况. 代码如下: ConcurrentLinkedQueue<s ...

  6. 在Docker中安装MongoDB

    在Docker中安装MongoDB docker run -p 27017:27017 -v /data/mongodb:/data/db --name mongodb -d mongo --auth ...

  7. Paddle概述

    Paddle概述 本文结合深度学习理论与实践,使用百度飞桨平台实现自然语言处理.计算机视觉及个性化推荐等领域的经典应用. 实践部分使用飞桨深度学习开源框架,适配最新的2.0版本,默认使用动态图编程范式 ...

  8. NVIDIA深度学习Tensor Core性能解析(下)

    NVIDIA深度学习Tensor Core性能解析(下) DeepBench推理测试之RNN和Sparse GEMM DeepBench的最后一项推理测试是RNN和Sparse GEMM,虽然测试中可 ...

  9. 英特尔 i5-9400F,或将成为本年最高性价比的游戏处理器

    英特尔 i5-9400F,或将成为本年最高性价比的游戏处理器 一直以来,每一代英特尔 i5 系列都是很多游戏玩家主要的选购对象,它和任何一款显卡似乎都能够很好的搭配起来.可凡事都有美中不足的地方,比如 ...

  10. STM32使用DMA发送串口数据

    1.概述 上一篇文章<STM32使用DMA接收串口数据>讲解了如何使用DMA接收数据,使用DMA外设和串口外设,使用的中断是串口空闲中断.本篇文章主要讲解使用DMA发送数据,不会讲解基础的 ...