0

0

在Java中如何开发简易员工管理系统_Java集合应用实践解析

P粉602998670

P粉602998670

发布时间:2026-01-17 15:05:19

|

244人浏览过

|

来源于php中文网

原创

应使用ArrayList统一管理员工对象,而非分开存储字段;Employee类需封装id、name等字段并实现构造方法和toString();避免用Map模拟对象或直接操作原始list引用,删除时用索引而非对象值,查询频繁时考虑HashMap索引,序列化需显式声明serialVersionUID。

在java中如何开发简易员工管理系统_java集合应用实践解析

用 ArrayList 存员工对象而不是 String 或 int

很多人一开始想“存名字用 ArrayList,存工号用 ArrayList”,结果很快发现:增删查改时根本没法关联——改了名字找不到对应工号。必须封装成一个实体类,再用 ArrayList 统一管理。

实操建议:

阳光订餐系统
阳光订餐系统

欢迎使用阳光订餐系统,本系统使用PHP5+MYSQL开发而成,距离上一个版本1.2.8发布已经有一年了。本系统集成了留言本,财务管理,菜单管理,员工管理,安全管理,WAP手机端等功能,并继续继承1.X老版本简单、实用、美观的特点,在老版本上的基础上做了如下更新:1.更简洁的前台与后台,菜单及功能布局更合理。2.更合理的文件结构,合理适度的模板机制以及OO运用,更易于理解的代码,更适于二次开发;3.

下载
  • Employee 类至少包含 idintString)、namedepartmentsalary 字段,并补全构造方法和 toString()
  • 避免用 ArrayList> 模拟对象——类型不安全,编译期无法检查字段名拼写错误
  • 如果后续要按 ID 快速查找,别硬写遍历循环,先记着:HashMap 才是更合适的结构(但集合练习阶段仍建议从 ArrayList 开始)

增删改查时别直接操作原始 list 引用

比如写了个方法 public void deleteById(ArrayList list, int id),然后在方法里执行 list.remove(i) —— 表面看没问题,但调用方传入的 list 被直接修改,容易引发并发修改或意外状态丢失。

常见错误现象:

立即学习Java免费学习笔记(深入)”;

  • 删除后再次查询,发现数据还在(其实是没删对索引,或用了 remove(Object) 误删第一个匹配元素)
  • 添加员工后,其他地方遍历 list 出现 ConcurrentModificationException(尤其在 for-each 循环中边遍历边 remove)
  • 传入的 list 是某个静态变量或共享缓存,被无意污染

实操建议:

  • 删除务必用索引方式:
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i).getId() == id) {
            list.remove(i);
            break;
        }
    }
  • 或者用迭代器安全删除:
    Iterator it = list.iterator();
    while (it.hasNext()) {
        if (it.next().getId() == id) {
            it.remove();
            break;
        }
    }
  • 增/改操作无需额外防护,但建议所有业务方法都以 void 返回,不返回 list 引用,避免链式调用误导

按条件查询别写三重嵌套 if + for

比如“查工资大于 8000 且部门为技术部的员工”,有人会这样写:

for (Employee e : list) {
    if (e.getSalary() > 8000) {
        if ("技术部".equals(e.getDepartment())) {
            result.add(e);
        }
    }
}
逻辑没错,但可读性差、难扩展,而且一旦加个“姓名含‘张’”的条件,立刻变四层。

实操建议:

  • 把筛选逻辑抽成独立方法:boolean matches(Employee e, double minSalary, String dept),主流程只剩一层 for
  • Java 8+ 推荐用 Stream(但注意:练习集合基础时不建议跳过传统写法):
    list.stream()
        .filter(e -> e.getSalary() > 8000)
        .filter(e -> "技术部".equals(e.getDepartment()))
        .collect(Collectors.toList());
  • 如果查询频繁且数据量超 500 条,ArrayList 的 O(n) 查找会明显卡顿——这时就得考虑是否该换 HashMap 做索引,或引入简易内存数据库如 H2

序列化保存到文件时避开 serialVersionUID 报错

ObjectOutputStream 写员工列表到 employees.dat,第一次能读,第二次运行就抛 InvalidClassException,提示 Employee; local class incompatible: stream classdesc serialVersionUID

这是因为 JVM 自动计算的 serialVersionUID 会随字段增减/类型变更而变化,导致反序列化失败。

实操建议:

  • Employee 类里显式声明:
    private static final long serialVersionUID = 1L;
    (初学者用 1L 即可,上线项目才需按规范生成)
  • 不要用 ArrayList 直接序列化——它内部有 transient 字段,反序列化后可能 size 正确但内容为空;应确保 Employee 本身可序列化且字段非 transient
  • 更轻量的替代方案:用 PrintWriter 写 CSV(id,name,dept,salary),用 Scanner 按行解析——虽然不支持复杂对象嵌套,但调试友好、人眼可读
实际开发中,最常被忽略的是「边界校验」:新增员工时没检查 id 是否重复,删除时传入不存在的 id 不报错也不提示,查不到人就返回空 list——这些不会导致程序崩溃,却会让使用者反复怀疑“是不是我输错了”。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

834

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

739

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

735

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

40

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.6万人学习

C# 教程
C# 教程

共94课时 | 6.9万人学习

Java 教程
Java 教程

共578课时 | 46.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号