当前位置: 首页 > news >正文

Java集合操作实战:List工人管理

一、实验实训目的和要求

1、掌握List集合对象的创建

2、掌握基于集合的元素添加、元素查询、元素删除、遍历集合等操作

3、掌握集合在项目功能中的应用

4、通过实验体会集合的灵活应用

3.1 计算机设备

操作系统:建议使用 Windows或 macOS 等主流操作系统,确保系统稳定且已安装 Java 开发环境(JDK),JDK 版本建议为Java8、Java 17 或Java 21。

处理器:具备基本的计算处理能力,能够流畅运行 Java 程序。一般来说,普通的笔记本电脑或台式机处理器均可满足需求,如英特尔酷睿系列或 AMD 锐龙系列处理器。

内存:至少 8GB 及以上的内存,以保证在编译和运行 Java 程序时系统不会因内存不足而出现卡顿或异常。

3.2 开发工具

集成开发环境(IDE):推荐使用 IntelliJ IDEA专业的 Java 开发工具,这些 IDE 提供了代码编辑、编译、调试等功能,能够极大地提高开发效率。当然,也可以使用简单的文本编辑器(如 Notepad++、Sublime Text 等)结合命令行工具进行 Java 开发,但对开发者的要求相对较高。

Java 开发工具包(JDK):作为 Java 开发的核心工具包,包含了 Java 编译器(javac)、Java 运行时环境(JRE)等必要的工具和库。确保 JDK 已正确安装并配置好环境变量,以便在命令行或 IDE 中能够正常使用 Java 相关命令。

3.3 其他辅助工具

文档编辑器:用于记录实验过程、回答思考题等,如 Microsoft Word、WPS 文字处理软件等。

截图工具:用于截取程序代码和运行结果图。

三、实验实训内容和主要操作步骤

2.1 验证性实验

1、List编程:创建一个工人类,属性:姓名、年龄、工资,要求如下:

类结构验证:检查 Worker 类是否正确定义了私有属性(姓名、年龄、工资),验证是否提供了无参和有参构造方法,确认所有属性都有对应的 getter 和 setter 方法。

public class Worker {

    // 私有属性

    private String name;

    private int age;

    private double salary;

    

    // 无参构造方法

    public Worker() {}

    

    // 有参构造方法

    public Worker(String name, int age, double salary) {

        this.name = name;

        this.age = age;

        this.salary = salary;

    }

    

    // get/set方法

    public String getName() {

        return name;

    }

    

    public void setName(String name) {

        this.name = name;

    }

    

    public int getAge() {

        return age;

    }

    

    public void setAge(int age) {

        this.age = age;

    }

    

    public double getSalary() {

        return salary;

    }

    

    public void setSalary(double salary) {

        this.salary = salary;

}

 // 重写toString方法,方便打印工人信息

    @Override

public String toString() {

     return "姓名:" + name + ",年龄:" + age + ",工资:" + salary;

}

    

}

2、功能验证:

  1. 程序应能正确创建多个 Worker 对象并存储在 List 集合中
  2. 能完整打印所有工人的信息
  3. 平均工资计算应准确无误
  4. 姓名包含 "胡" 的查询应正确(包含中间或结尾有 "胡" 字的情况)
  5. 姓 "胡" 的查询应只返回以 "胡" 字开头的工人
  6. 键盘输入一个姓名,查找是否存在此员工,存在,则打印输出员工的信息,如果不存在,则输出"查无此人"。
  7. 输入一个工资,查询工资 大于 输入工资的员工信息。

代码如下,请验证上述问题相关功能。

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class WorkerTest {

    public static void main(String[] args) {

        // (2) 创建多个Worker类,存储在List集合中

        List<Worker> workers = new ArrayList<>();

        workers.add(new Worker("张三", 30, 5000));

        workers.add(new Worker("胡四", 28, 6000));

        workers.add(new Worker("王五", 35, 7000));

        workers.add(new Worker("胡六六", 40, 8000));

        workers.add(new Worker("赵七", 25, 4500));

        workers.add(new Worker("胡八一", 38, 9000));

        

        // (3) 打印输出所有的工人信息

        System.out.println("(3) 所有工人信息:");

        for (Worker worker : workers) {

            System.out.println(worker);

        }

        

        // (4) 计算所有工人的平均工资

        double totalSalary = 0;

        for (Worker worker : workers) {

            totalSalary += worker.getSalary();

        }

        double avgSalary = totalSalary / workers.size();

        System.out.println("所有工人的平均工资:" + avgSalary);

        

        // (5) 打印输出姓名中包含 "胡" 的所有工人信息

        System.out.println("姓名中包含'胡'的工人信息:");

        for (Worker worker : workers) {

            if (worker.getName().contains("胡")) {

                System.out.println(worker);

            }

        }

        // (6) 打印输出所有姓 "胡" 的工人信息

        System.out.println("姓'胡'的工人信息:");

        for (Worker worker : workers) {

            if (worker.getName().startsWith("胡")) {

                System.out.println(worker);

            }

        }

        // (7) 键盘输入一个姓名,查找是否存在此员工

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入要查找的姓名:");

        String searchName = scanner.nextLine();

        boolean found = false;

        for (Worker worker : workers) {

            if (worker.getName().equals(searchName)) {

                System.out.println("找到该员工:" + worker);

                found = true;

                break;

            }

        }

        if (!found) {

            System.out.println("查无此人");

        }

        // (8) 输入一个工资,查询工资大于输入工资的员工信息

        System.out.println("请输入一个工资:");

        double searchSalary = scanner.nextDouble();

        System.out.println("工资大于" + searchSalary + "的员工信息:");

        for (Worker worker : workers) {

            if (worker.getSalary() > searchSalary) {

                System.out.println(worker);

            }

        }

        scanner.close();

    }

}

2.2 自主设计性实验

2、已知有 User类,属性为姓名、年龄、性别,完成类的封装并提供无参数、有参数构造方法,完成以下要求:

(1) 创建一个 List,在 List 中增加三个User对象

(2) 打印输出集合中所有的女用户信息

(3) 利用自遍历的方式,打印输出用户姓名长度大于 2 的信息

3、创建一个商品(Product)类,属性:商品名,商品单价,商品的数量,商品产地。

(1) 创建多个商品对象,存储在List集合中,集合中不能出现重复商品,商品名相同即为重复,在Product类中添加必要的方法;

(2) 显示所有的商品信息;

(3) 打印输出商品价格 > 1000 的所有商品信息;

(4) 打印售空的商品的信息;

(5) 打印输出商品产地为"北京"的商品信息;

(6) 输入一个商品名,查询出此类商品的信息,如果不存在,则打印商品"商场无此商品!!!"

(7) 输入一个价格段,查询出集合中所有在这个价格区间的所有商品信息。

4、利用 List存储多个整数,例如:19、45、309、21、189,完成以下需求:

(1) 将 集合中所有数据进行打印输出

(2) 将集合中所有的三位数进行打印输出

(3) 计算集合中所有数据的平均值

(4) 打印输出集合中的最大值

(5) 将集合中的所有元素进行倒叙打印输出

5、利用List存储多个字符,例如:’A’、’a’、’s’、’p’、’+’、’X’、’-’,完成以下需求:

(1) 将集合中所有的字符进行拼接,打印拼接结果

(2) 打印输出集合所有的大写字母

(3) 统计集合中非字母的个数,并打印输出

6、根据以下界面提示以及附件源码,设计一个程序,用于管理学生信息。[综合性程序设计]

三、实验设备(材料)

3.1 计算机设备

操作系统:建议使用 Windows或 macOS 等主流操作系统,确保系统稳定且已安装 Java 开发环境(JDK),JDK 版本建议为 Java 17 或Java 22。

处理器:具备基本的计算处理能力,能够流畅运行 Java 程序。一般来说,普通的笔记本电脑或台式机处理器均可满足需求,如英特尔酷睿系列或 AMD 锐龙系列处理器。

内存:至少 8GB 及以上的内存,以保证在编译和运行 Java 程序时系统不会因内存不足而出现卡顿或异常。

3.2 开发工具

集成开发环境(IDE):推荐使用 IntelliJ IDEA专业的 Java 开发工具,这些 IDE 提供了代码编辑、编译、调试等功能,能够极大地提高开发效率。当然,也可以使用简单的文本编辑器(如 Notepad++、Sublime Text 等)结合命令行工具进行 Java 开发,但对开发者的要求相对较高。

Java 开发工具包(JDK):作为 Java 开发的核心工具包,包含了 Java 编译器(javac)、Java 运行时环境(JRE)等必要的工具和库。确保 JDK 已正确安装并配置好环境变量,以便在命令行或 IDE 中能够正常使用 Java 相关命令。

3.3 其他辅助工具

文档编辑器:用于记录实验过程、回答思考题等,如 Microsoft Word、WPS 文字处理软件等。

截图工具:用于截取程序代码和运行结果图。

四、实验注意事项

4.1 代码编写规范

严格遵循 Java 的命名规范,类名、方法名、变量名等应具有明确的含义,采用驼峰命名法,增强代码的可读性。例如,类名首字母大写,方法名和变量名首字母小写。

注意代码的缩进和排版,保持代码的整洁和美观。一般来说,使用 4 个空格或一个制表符进行缩进,使代码结构清晰,易于理解和维护。

合理添加注释,对关键代码、复杂逻辑或重要步骤进行详细解释,方便自己和他人阅读代码。注释可以使用单行注释(//)或多行注释(/* ... */)。

4.2 输入输出处理

在读取输入时,要注意处理可能出现的异常情况,如输入格式错误、输入数据超出范围等。可以使用异常处理机制(try-catch 语句)来捕获和处理这些异常,避免程序因输入错误而崩溃。

输出结果时,要严格按照实验要求的格式进行输出,包括换行符、空格等的使用。例如,本题要求每个名字占一行输出,务必确保输出格式正确,否则可能导致测试不通过。

4.3 编译与运行

在编译 Java 程序之前,确保代码中没有语法错误。可以使用 IDE 提供的语法检查功能或通过命令行使用javac命令进行编译。如果编译过程中出现错误,仔细阅读错误信息,定位并修正代码中的问题。

运行程序时,要注意程序的运行环境和输入数据的正确性。可以使用不同的测试用例进行测试,确保程序在各种情况下都能正常运行并得到正确的结果。

4.4 资源管理

在使用Scanner等资源时,要注意及时关闭资源,避免资源泄漏。可以在程序结束时调用scanner.close()方法关闭Scanner对象。

对于使用的其他资源(如文件、网络连接等),同样要遵循资源管理的原则,在不再使用时及时释放资源,保证程序的性能和稳定性。

4.5 实验记录与提交

在实验过程中,要认真记录实验步骤、遇到的问题及解决方法等关键信息。这些记录有助于自己回顾和总结实验过程。

实验成果提交要确保代码截图清晰、源码规范,并对实验结果进行详细的分析和总结。

五、思考题

1、Java 中的 List 集合有哪些常用实现类?它们之间的主要区别是什么?

2、当需要频繁进行元素的插入和删除操作时,应该选择 ArrayList 还是 LinkedList?为什么?

3、如何往 List 集合中添加元素?如何获取指定位置的元素?如何删除集合中的元素?

4、如何遍历一个 List 集合?请说出至少两种常用的遍历方式。

5、如何判断一个List集合是否包含某个元素?

 

http://www.dtcms.com/a/508451.html

相关文章:

  • C#高级:数据库中使用SQL作分组处理4(LAG() 偏移函数)
  • 福州手游网站建设c2c电商平台有哪几个
  • 做pvc卡片的交流网站wordpress移除头部无用
  • 怎么搭建一个自己的网站洛阳做公司网站
  • 简述营销型企业网站建设的内容wordpress小店主题
  • 崩溃信息追溯——backward-cpp
  • 怎么找网站帮我做推广wordpress加入下载标签
  • 深度学习实验二 简单神经网络模型构建
  • IP 汇总名单
  • 同城购物网站建设成本有人上相亲网站做传销燕窝
  • P7073 [CSP-J2020] 表达式
  • 昆山住房与城乡建设局网站成都市成华区建设局官方网站
  • 2025 年六款 AI 视频转文字工具实测分析:功能与场景适配对比
  • 如何做微信网站建设紫色的网站
  • dify 源码分析(六)ratelimiter
  • 阜阳网站开发招聘网站维护电话
  • 傻瓜式做网站哪个软件好网站搭建模板
  • 做国外家具贸易的网站重庆网站建设mlfart
  • 绵阳网站建设公司广州引流推广公司
  • 容桂做外贸网站海口分类信息网站
  • 宁波高端模板建站搭建网站开发网站环境
  • 青岛seo网站排名徐州免费网站建设
  • Redis Stream相比阻塞列表和发布订阅有哪些优势?适合什么场景?
  • 企业每年向工商网站做申报如何把网站提交给百度
  • seo网站模板做网站推广什么好
  • 正则表达式:用Python Re模块驯服文本数据的艺术
  • 使用 Docker 容器测试端口开放性
  • 后端常用注解
  • Spring 的bean是安全的吗
  • 网站建设优化现状图表网站开发结构文档