d13(126-129)-勇敢开始Java,咖啡拯救人生

目录

Arrays类

数组中存储对象时 排序

在要比较的类中public class 类名 implements Comparable <类名>

Comparator

JDK8新特性:Lambda表达式

Lambda表达式的省略写法

方法引用

静态方法引用

实例方法引用

特定类型的方法引用

构造器引用

医院挂号系统


Arrays类

操作数组的工具类

数组中存储对象时 排序

在要比较的类中public class 类名 implements Comparable <类名>

Comparator

JDK8新特性:Lambda表达式

用于简化匿名内部类的代码表示[只能简化函数式接口的匿名内部类]

函数式接口:有且仅有一个抽象方法的接口[可能有@FunctionalInterface的注解]

另一个例子

Lambda表达式的省略写法

方法引用

进一步简化Lambda表达式

静态方法引用

类名::静态方法

如果某Lambda表达式里只调用一个静态方法,并且前后参数的形式一致,就可以用静态方法引用

实例方法引用

对象名::实例方法

如果某Lambda表达式里只调用一个实例方法,并且前后参数的形式一致,就可以用实例方法引用

特定类型的方法引用

类型::方法

如果某Lambda表达式里只调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以用特定类型的方法引用。

构造器引用

类名::new

如果某Lambda表达式里只是在创建对象,并且前后参数情况一致,就可以用构造器引用

医院挂号系统

HosipitalManager

package cn.ptz.frame;import cn.ptz.bean.Appointment;
import cn.ptz.bean.Department;
import cn.ptz.bean.Doctor;
import cn.ptz.bean.Schedule;
import jdk.swing.interop.SwingInterOpUtils;import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.UUID;public class HospitalManager {private ArrayList<Department> allDepartments = new ArrayList<>();private ArrayList<Appointment> appointments = new ArrayList<>();private Scanner sc = new Scanner(System.in);public void start() {while (true) {System.out.println("----医院管理系统");System.out.println("1、科室管理-添加科室");System.out.println("2、科室管理-删除科室");System.out.println("3、科室管理-修改科室");System.out.println("4、医生管理-录入医生");System.out.println("5、医生管理-医生坐诊设置");System.out.println("6、医生管理-展示医生坐诊情况");System.out.println("7、医生管理-挂号预约");System.out.println("8、搜索某医生预约情况");System.out.println("请输入操作命令");Scanner sc = new Scanner(System.in);switch (sc.next()) {case "1":addDepartment();break;case "4":addDoctor();break;case "5":setDoctorJob();break;case "6":showAllDoctorInfos();break;case "7":break;case "8":break;default:}}}private void showAllDoctorInfos() {System.out.println("----全部医生坐镇信息如下");for (int i = 0; i < allDepartments.size(); i++) {Department department = allDepartments.get(i);System.out.println((i + 1) + "," + department.getName());System.out.println("-----------------------");ArrayList<Doctor> doctors = department.getDoctors();for (int j = 0; j < doctors.size(); j++) {Doctor doctor = doctors.get(j);System.out.println(doctor.getName() + "的坐诊信息");ArrayList<Schedule> schedules = doctor.getSchedules();updateSchedules(schedules);for (int k = 0; k < schedules.size(); k++) {Schedule schedule = schedules.get(k);System.out.println(schedule.getToday());if (!schedule.isUpdate()){System.out.println("未排班");continue;}if (schedule.isMorning()){System.out.println("上午" + schedule.getMstart() + "---" + schedule.getMend());System.out.println("预约总人数:" + schedule.getmTotalNumber());}else {System.out.println("上午休息");}if (schedule.isAfternoon()){// 同上午}}}}}private void setDoctorJob() {System.out.println("-------医生坐诊时间");Department department = getDepartmentByUser();if (department == null){return;}ArrayList<Doctor> doctors = department.getDoctors();if (doctors.size() == 0){System.out.println("当前无医生");return;}while (true){System.out.println("医生列表如下:");for (int i = 0; i < doctors.size(); i++) {Doctor doctor = doctors.get(i);System.out.println((i + 1) + "、" + doctor.getName());}System.out.println("请输入");int command = sc.nextInt();if (command < 1 || command > doctors.size()){System.out.println("输入有误");continue;}Doctor doctor = doctors.get(command - 1);ArrayList<Schedule> schedules = doctor.getSchedules();updateSchedules(schedules);for (int i = 0; i < schedules.size(); i++) {Schedule schedule = schedules.get(i);updateDoctorSchedule(schedule);}}}private void updateDoctorSchedule(Schedule schedule) {LocalDate today = schedule.getToday();System.out.println(today + "的安排如下");if (!schedule.isUpdate()) {System.out.println("未排班");} else {System.out.println("上午");if (schedule.isMorning()) {System.out.println();} else {System.out.println("休息");}System.out.println("下午");if (schedule.isAfternoon()) {System.out.println();} else {System.out.println("休息");}}System.out.println("是否修改 y/n");String rs = sc.next();if ("y".equals(rs)) {schedule.setUpdate(true);System.out.println("上午是否上班 y/n");String rs2 = sc.next();if ("y".equals(rs2)){schedule.setMorning(true);System.out.println("上午上班的开始时间和结束时间是");String start = sc.next();String end = sc.next();System.out.println("可预约人数是");int number = sc.nextInt();schedule .setMstart(LocalTime.parse(start));schedule .setMend(LocalTime.parse(end));schedule.setmTotalNumber(number);}else{schedule.setMorning(false);}System.out.println("下午是否上班 y/n");// 同上午}}private void updateSchedules(ArrayList<Schedule> schedules) {if (schedules.size() == 0){// 第一次排班for (int i = 0; i <= 6; i++) {Schedule schedule = new Schedule();LocalDate now = LocalDate.now();schedule.setToday(now.plusDays(i));schedules.add(schedule);}return;}// 去除过期的时间for (int i = 0; i < schedules.size(); i++) {Schedule schedule = schedules.get(i);LocalDate now = LocalDate.now();LocalDate current = schedule.getToday();if (current.equals(now)){break;}if (current.isBefore(now)){schedules.remove(schedule);i--;}}// 补全当前和未来6天LocalDate last = schedules.get(schedules.size() - 1).getToday();int size = schedules.size();for (int i = 0; i < 7 - size; i++) {Schedule schedule = new Schedule();schedule.setToday(last.plusDays(i + 1));schedules.add(schedule);}}private Department getDepartmentByUser() {if (allDepartments.size() == 0) {System.out.println("当前无科室");return null;}while (true) {System.out.println("选择科室");for (int i = 0; i < allDepartments.size(); i++) {Department department = allDepartments.get(i);System.out.println((i + 1) + "、" + department.getName());}System.out.println("请输入");int command = sc.nextInt();if (command < 1 || command > allDepartments.size()) {System.out.println("输入有误");continue;}return allDepartments.get(command - 1);}}private void addDoctor() {System.out.println("-------添加医生");Doctor doctor = new Doctor();Department department = getDepartmentByUser();doctor.setDepartmentName(department.getName());doctor.setDoctorId(UUID.randomUUID().toString());System.out.println("姓名");String name = sc.next();doctor.setName(name);// 省略其他信息的录入 性别、年龄、特长..System.out.println("入职时间(yyyy-MM-dd)");String joinDateString = sc.next();LocalDate joinDate = LocalDate.parse(joinDateString);doctor.setJoinDate(joinDate);department.getDoctors().add(doctor);System.out.println("录入成功");}private void addDepartment() {System.out.println("------添加科室");OUT:while (true) {System.out.println("请输入科室名称");String name = sc.next();for (int i = 0; i < allDepartments.size(); i++) {Department department = allDepartments.get(i);if (department.getName().equals(name)) continue OUT;}Department department = new Department();department.setName(name);allDepartments.add(department);System.out.println("添加成功");break;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FANUC机器人SOCKET连接指令编写

一、创建一个.KL文件编写连接指令 创建一个KL文本来编写FANUC机器人socket连接指令 二、KAREL指令代码 fanuc机器人karel编辑器编辑的karel代码如下&#xff1a; PROGRAM SM_CON %COMMENT SOCKET连接 %STACKSIZE 4000 --堆栈大小 %INCLUDE klevccdfVAR status,data_type,in…

【draw.io的使用心得介绍】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

OpenHarmony实战开发-使用SmartPerf-Host分析应用性能

简介 SmartPerf-Host是一款深入挖掘数据、细粒度展示数据的性能功耗调优工具&#xff0c;可采集CPU调度、频点、进程线程时间片、堆内存、帧率等数据&#xff0c;采集的数据通过泳道图清晰地呈现给开发者&#xff0c;同时通过GUI以可视化的方式进行分析。该工具当前为开发者提…

2024第十五届蓝桥杯网络安全赛项WriteUp

欢迎关注公众号【Real返璞归真】回复【蓝桥杯2024】获取完整题目附件。 排名 安全知识 错1个选择题&#xff0c;题目说的不清楚&#xff0c;没搞懂题意。肯定不能用eval。错了理论题有点遗憾。 没想到这题前端是要解析json数据&#xff0c;排除CD选了A&#xff0c;结果发现正…

每日一题(力扣45):跳跃游戏2--贪心

由于题目已经告诉了我们一定可以跳到&#xff0c;所以我们只需去考虑前进最快的方法。即 判断当前下一步能跳的各个位置中&#xff0c;哪个能带你去去向最远的地方&#xff08;why&#xff1f; 因为其他位置所能提供的最大范围都没最远那个大&#xff0c;所以最远的那个已经可以…

嵌入式Linux学习——Ubantu初体验

Ubuntu 和Windows 的最大差别 Windows中的每一个分区都对应着一个盘符&#xff0c;盘符下可以存放目录与文件&#xff0c;而在Ubantu中没有盘符的概念&#xff0c;只有目录结构。实际上不同的目录可能挂载在不同的分区之下&#xff0c;如果想要查看当前目录位于磁盘的哪个分区…

【服务器部署篇】Jenkins配置后端工程自动化部署

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

Transformer实战 单词预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;TensorFlow入门实战&#xff5c;第3周&#xff1a;天气识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 一、定义模型 from tempfile import Tempor…

ruoyi-nbcio-plus基于vue3的flowable为了适配文件上传改造VForm3的代码记录

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

java如何使用webService方式调用对接第三方平台

实际使用记录&#xff0c;做个记录&#xff1a; 1、需要对方提供wsdl文件,该文件中有接口的Ip地址&#xff0c;方法名、参数等详细信息&#xff0c; wsdl文档中targetNamespace为命名空间 <xsd:element name"searchBGDMIInfo">标签中name是方法名&#xff1…

数据结构-树和森林之间的转化

从树的二叉链表的定义可知&#xff0c;任何一棵和树对应的二叉树&#xff0c;其根节点的右子树必为空。这里我们举三个树&#xff0c;将这个由三个树组成的森林组成二叉树是这个样子的。 下面我们说明一下详细过程&#xff0c;首先将每个树转化为二叉的状态&#xff0c;如图所示…

NAT网络地址转换实验(华为)

思科设备参考&#xff1a;NAT网络地址转换实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 NAT&#xff08;Network Address Translation&#xff09;&#xff0c;即网络地址转换技术&#xff0c;是一种在现代计算机网络中广泛应用的技术&#xff0c;主要用于有效管…

汇编语言(详解)

汇编语言安装指南 第一步&#xff1a;在github上下载汇编语言的安装包 网址&#xff1a;GitHub - HaiPenglai/bilibili_assembly: B站-汇编语言-pdf、代码、环境等资料B站-汇编语言-pdf、代码、环境等资料. Contribute to HaiPenglai/bilibili_assembly development by creat…

李廉洋:4.27黄金原油下周一行情分析及走势策略。

金价将出现六周来的首次单周下跌&#xff0c;因投资者在金价上涨数月后获利了结。自2月中旬的低点以来&#xff0c;金价已经上涨了约17%&#xff0c;尽管对美联储放松政策的预期正在减弱&#xff0c;但金价仍屡创新高。周五公布的最新通胀数据强化了高利率将暂时维持的观点。“…

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian)

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian) clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;% 读取图像 image imread(lena.png); % 转换为灰度图像 gray_image rgb2gray(image); % 转换为double类型以进行计算…

Git泄露和hg泄露原理理解和题目实操

一.Git泄露 1.简介 Git是一个开源的分布式版本控制系统&#xff0c;它可以实现有效控制应用版本&#xff0c;但是在一旦在代码发布的时候&#xff0c;存在不规范的操作及配置&#xff0c;就很可能将源代码泄露出去。那么&#xff0c;一旦攻击者发现这个问题之后&#xff0c;就…

论文速览 | IEEE Symposium on Security and Privacy (SP), 2023 | FMCW雷达反射阵列欺骗攻击

注1:本文系"计算成像最新论文速览"系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‑Science & Applications, Optica 等)。 本次介绍的论文是:<I…

MariaDB 修改用户密码的 SQL

有时候我们希望能够修改数据库中访问用户的密码。 但是我们只能 SQL 登录服务器后才能进行修改。 修改的 SQL 为&#xff1a; ALTER USER root% IDENTIFIED WITH mysql_native_password BY 123;针对实际上数据的配置情况&#xff0c;上面的 SQL 是需要进行一些调整的。 MySQ…

鸿蒙云函数调试坑点

如果你要本地调试请使用 const {payload, action} event.body/** 本地调试不需要序列化远程需要序列化 */ // const {payload, action} JSON.parse(event.body) const {payload, action} event.body 注意: 只要修改云函数&#xff0c;必须上传云函数 如果使用 const {pay…

25计算机考研院校数据分析 | 南京大学

南京大学&#xff08;Nanjing University&#xff09;&#xff0c;简称“南大”&#xff0c;是中华人民共和国教育部直属、中央直管副部级建制的全国重点大学&#xff0c;国家首批“双一流”、“211工程”、“985工程”重点建设高校&#xff0c;入选首批“珠峰计划”、“111计划…