Java实验项目三——职工类对象数组按照职工生日排序
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实验项目三——职工类对象数组按照职工生日排序的更多相关文章
- Java实验项目三——面向对象定义职工类和日期类
Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...
- Java实验项目六——使用DAO模式实现对职工表的操作
Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...
- Java实验项目三——简单工厂模式
Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽 ...
- Java实验项目三——采用面向对象的方式设计线性表
Program: 采用面向对象的方法设计一个线性表,目的是为其他需要用线性表的应用提供线性表对象. 1.list包中,定义线性表类 1 /* 2 * Description:定义线性表类 3 * 4 ...
- Java实验项目三——编程实现Person类,学生类的设计及其继承关系
Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...
- Java实验项目三——宠物商店
Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...
- Java实验项目三——平面图形和立体图形抽象类
Program:按照下面要求完成类的设计 (1)设计一个平面图形抽象类和一个立体图形抽象类,提供该类对象公共的方法和属性. (2)修改项目三中第2题中所设计的球类.圆柱类,圆锥类.矩形类.三角形类.圆 ...
- Java实验项目三——递归实现字符串查找和替换操作
Program:按照下面要求实现字符串的操作: (1)设计一个提供下面字符串操作的类 1)编写一个方法,查找在一个字符串中指定字符串出现的次数. 2)编写一个方法,参数(母字符串,目标字符串,替换字符 ...
- 20135231 JAVA实验报告三:敏捷开发与XP实践
---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...
随机推荐
- STM32的VDD与VDDA
http://bbs.21ic.com/icview-1651072-1-1.html VDD VSS 就是平常的电源与地.后面带A的都是模拟量的电源.
- JMeter36个内置函数及11个新增函数介绍
JMeter内置了36个函数,这些函数可以通过函数助手进行编辑和测试.了解这些函数,不仅能提高JMeter的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴. J ...
- IDEA2021.1 安装教程
工欲善其事必先利其器. 一.下载 IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/ 二.安装 IDEA 注:安装IDEA之前需要我 ...
- Prometheus监控软件部署方法
背景:负责基于区块链的某公正项目的状态上报模块设计编码,基于Prometheus进行二次开发 1.说明Prometheus 是一个开源的服务监控软件,它通过 HTTP 协议从远程机器收集数据并存储在本 ...
- docker部署node.js
1.dockerfile FROM node:14.16.0 RUN mkdir -p /var/log/lily/ RUN mkdir -p /opt/node # 工作目录 WORKDIR /op ...
- Go语言练习---判断闰年以及根据现在的秒数求现在的年月日
package main import ( "fmt" "math" "time" ) /* @闰年判断 ·封装一个函数判断某一个年份是不是 ...
- 如何挑选深度学习 GPU?
如何挑选深度学习 GPU? 深度学习是一个对计算有着大量需求的领域,从一定程度上来说,GPU的选择将从根本上决定深度学习的体验.因此,选择购买合适的GPU是一项非常重要的决策.那么2020年,如何选择 ...
- 作为一名双非本科毕业的Java程序员,我该如何在日益严重的内卷化中避免被裁?
前言 对一个 Java 程序员而言,并发编程能否熟练掌握是判断他是不是优秀的重要标准之一.因为并发编程在 Java 语言中最为晦涩的知识点,它涉及内存.CPU.操作系统.编程语言等多方面的基础能力,更 ...
- Android 小知识点笔记
获取 view 的位置 View.getLocationInWindow(int[] location) 一个控件在其父窗口中的坐标位置 View.getLocationOnScreen(int[] ...
- 笔记-13-多线程 Thread方法 线程安全 生产者和消费者 死锁和阻塞 练习
题目1 编写程序,创建两个线程对象,一根线程循环输出"播放背景音乐",另一根线程循环输出"显示画面";要求: 1: 1个线程使用Runnable接口的匿名内部类 ...