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

Java Map集合操作实战指南

一、实验实训目的和要求

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

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

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

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、验证一下功能是否符合题目要求:

定义一个Map集合,利用键值对存储相关信息,以键存储工号-Integer类型,值存储员工姓名-String类型,按照要求完成以下功能:

  1. 利用键遍历的方式遍历Map集合
  2. 利用键值对的方式遍历Map集合
  3. 输入一个工号,查询员工姓名,如果不存在,则打印输出”查无此人”
  4. 输入一个员工姓名,查询此员工是否存在,存在-打印输出员工信息,否则打印输出”查无此人”

2、验证一下功能是否符合题目要求:

定义一个银行用户 BankUser 类,用户信息为用户 id、用户名 userName、余额 balance。

(1)利用 HashMap 存储用户信息:id作为键,用户作为值,创建多个用户对象进行存储;

(2)遍历打印输出所有银行的用户名和对应的余额;

(3)键盘输入一个用户名,检测是否存在此用户,存在-打印用户信息;不存在-打印查无此;

(4)打印输出余额大于 200000 的用户信息。

代码如下:

public class BankUser {

    private int id;

    private String userName;

    private double balance;

    // 构造方法

    public BankUser(int id, String userName, double balance) {

        this.id = id;

        this.userName = userName;

        this.balance = balance;

    }

    // getter方法

    public int getId() {

        return id;

    }

    public String getUserName() {

        return userName;

    }

    public double getBalance() {

        return balance;

    }

    // 重写toString方法,方便打印用户信息

    @Override

    public String toString() {

        return "用户ID: " + id + ", 用户名: " + userName + ", 余额: " + balance;

    }

}

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;

import java.util.Set;

public class BankUserManagement {

    public static void main(String[] args) {

        // 1. 创建HashMap存储用户信息,id作为键,用户对象作为值

        Map<Integer, BankUser> bankUsers = new HashMap<>();

        // 添加多个用户对象

        bankUsers.put(1001, new BankUser(1001, "张三", 150000.0));

        bankUsers.put(1002, new BankUser(1002, "李四", 250000.0));

        bankUsers.put(1003, new BankUser(1003, "王五", 300000.0));

        bankUsers.put(1004, new BankUser(1004, "赵六", 180000.0));

        bankUsers.put(1005, new BankUser(1005, "钱七", 220000.0));

        // 2. 遍历打印所有银行用户的用户名和对应的余额

        System.out.println("=== 所有用户的用户名和余额 ===");

        Set<Map.Entry<Integer, BankUser>> entries = bankUsers.entrySet();

        for (Map.Entry<Integer, BankUser> entry : entries) {

            BankUser user = entry.getValue();

            System.out.println("用户名: " + user.getUserName() + ", 余额: " + user.getBalance());

        }

        // 3. 键盘输入用户名,检测是否存在此用户

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入要查询的用户名: ");

        String searchName = scanner.nextLine();   

        boolean exists = false;

        for (BankUser user : bankUsers.values()) {

            if (user.getUserName().equals(searchName)) {

                System.out.println("找到用户: " + user);

                exists = true;

                break;

            }

        }

        if (!exists) {

            System.out.println("查无此用户");

        }

        // 4. 打印输出余额大于200000的用户信息

        System.out.println("=== 余额大于200000的用户 ===");

        for (BankUser user : bankUsers.values()) {

            if (user.getBalance() > 200000) {

                System.out.println(user);

            }

        }

        scanner.close();

    }

}

    

2.2 自主设计性实验

3、以下为已知某学校的教学课程内容安排,完成指定要求:

(1) 使用 Map,以老师的名字作为键,教授的课程名作为值,表示上述课程安排

(2) 增加了一位新老师 Allen 教 JDBC

(3) Lucy 改为教 CoreJava

(4) 遍历 Map,输出所有的老师及老师教授的课程

(5) 利用 Map,输出所有教 JSP 的老师

(6) 统计教授 CoreJava 和 JDBC 老师的人数

4、利用Map,完成下面的功能:

从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该年没有举办世界杯,则输出:没有举办世界杯。

附录:截止2025 年,历届世界杯冠军以及对应的夺冠年份:

5、在上一题目的基础上,增加如下功能:输入一支球队的名字,输出该球队夺冠的年份列表。

例如:

  1. 输入“巴西”,应当输出1958、1962、1970、1994、2002
  2. 输入“荷兰”,应当输出”没有获得过世界杯”。

五、实验实训结论与思考

1、Java 中的 Map 集合是什么?它和 Set、List 集合的主要区别是什么?

分析:

 Map集合的定义: Map  是 Java 集合框架中的一个接口,用于存储键 - 值对(Key - Value pair),通过键(Key)可以快速查找对应的值(Value)。

- 与  Set 、 List  的主要区别:

-  List :是有序的集合,元素可重复,通过索引(如  list.get(0) )访问元素,关注元素的“顺序”和“可重复存储”。

-  Set :是无序的集合,元素不可重复,关注“元素的唯一性”。

-  Map :存储的是键 - 值对,键(Key)具有唯一性(同一  Map  中不能有重复的键),值(Value)可重复;它不直接存储“单个元素”,而是通过键关联值,核心是“键值映射关系”。

  1. Map 集合中 “键(Key)” 和 “值(Value)” 的关系是什么?键可以重复吗?值可以重复吗?

分析:

键(Key)和值(Value)的关系:在  Map  中,键(Key)是用于查找的“索引”,值(Value)是与键关联的“数据”,每个键唯一对应一个值,即通过键能唯一确定一个值。

- 键和值的重复性:

- 键(Key)不可以重复:同一  Map  中如果有重复的键,后添加的键值对会覆盖先添加的(因为键要保证唯一性,用于准确查找)。

- 值(Value)可以重复:不同的键可以对应相同的值。

  1. HashMap 是 Map 的常见实现类,它有什么特点?比如键是否允许为 null?

分析:

HashMap  是  Map  接口的常用实现类,具有以下特点:

- 存储结构:基于哈希表(数组 + 链表/红黑树)实现,利用哈希算法提高查找、插入、删除的效率。当链表长度超过阈值(默认 8)且数组长度大于等于 64 时,链表会转化为红黑树,进一步优化查找性能。

- 键的规则:

- 键(Key)允许为  null ,但只能有一个键为  null  的键值对。

- 有序性: HashMap  是无序的,即元素的存储顺序和插入顺序无关。

- 线程安全性: HashMap  是非线程安全的,如果在多线程环境下使用,可能会出现线程安全问题。

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

相关文章:

  • 基带无线资源、物理层帧结构、无线资源调度的介绍
  • 天天seo站长工具seo排名优化服务
  • 昆明网站建设建站模板jsp网站建设项目实战电子版
  • 做暖视频网站免费网站建设战略合作方案
  • Android开发-java版:data的存取和SharedPreferences
  • 国外 创意 网站无锡做网站优化价格
  • 上行10m企业光纤做网站如何查询网站备案时间
  • 设计公司网站的主页怎么做西安做效果图的公司
  • 河北建设网官方网站深圳app开发公司排行
  • 有没有网站做胡兼职政和县建设局网站公告
  • 浙江新华建设有限公司网站中国企业500强招聘
  • 网站开发英文论文国内论坛网站有哪些
  • 山东平台网站建设推荐网站模板制作与安装教程视频
  • 柳州网站建设服务h5创建网站
  • 吉林网站备案ps做网站画布多大
  • 深圳集智邦是网站建设公司安康信息平台
  • XHLJ2021-easykernel之 seq_operations结合pt_regs
  • 网站怎么备份wordpress edd插件
  • 出格做网站学生个人网页制作html报告
  • 在 Oracle Data Guard 环境中,手工将备库(Standby)切换为主库(Primary)
  • 网站icp备案证书莱州网络推广公司
  • AI评测趋势一站速览,司南Daily Benchmark专区上线!
  • go语言做的网站动漫设计专业怎么样
  • 优秀企业网站设计要点房子装修价格
  • 什么网站做的好看北京企业建站
  • 天通苑网站建设成都制作网站提供商
  • 学网站开发需要学那些电商网站可维护性
  • 一个空间可以做两个网站吗前端培训机构哪个最好
  • 7.1 Dify开发平台简介:面向零基础人员的Agent开发平台
  • 中国app排行榜优化大师官网下载安装