HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查

正文

✅ 实验验证题1:

Map<Integer,String>,key=工号,value=员工姓名

功能:

  1. key遍历、entry键值对遍历两种方式

  2. 输入工号查询名字,无则输出查无此人

  3. 输入姓名查询员工,无则输出查无此人

    核心知识点:Map是双列集合,key唯一,value可重复;keySet()拿所有键,entrySet()拿到完整键值对。

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;

import java.util.Set;

public class EmpMapTest {

public static void main(String\[\] args) {

Map<Integer,String> empMap = new HashMap<>();

empMap.put(1001,"张三");

empMap.put(1002,"李四");

empMap.put(1003,"王五");

empMap.put(1004,"赵六");

复制代码
    System.out.println("=====方式1:key遍历(keySet)=====");
    Set<Integer> keys = empMap.keySet();
    for(Integer k : keys){
        System.out.println("工号:"+k + ",姓名:"+empMap.get(k));
    }

    System.out.println("\n=====方式2:键值对遍历(entrySet)=====");
    for(Map.Entry<Integer,String> entry : empMap.entrySet()){
        System.out.println("工号:"+entry.getKey() + ",姓名:"+entry.getValue());
    }

    Scanner sc = new Scanner(System.in);
    // 根据工号查询
    System.out.print("\n请输入要查询的工号:");
    int searchId = sc.nextInt();
    if(empMap.containsKey(searchId)){
        System.out.println("查到员工姓名:"+empMap.get(searchId));
    }else{
        System.out.println("查无此人");
    }
    sc.nextLine();

    // 根据姓名查询
    System.out.print("\n请输入要查询的员工姓名:");
    String searchName = sc.nextLine();
    boolean flag = false;
    for(Map.Entry<Integer,String> entry : empMap.entrySet()){
        if(entry.getValue().equals(searchName)){
            System.out.println("查到员工:工号"+entry.getKey()+",姓名"+entry.getValue());
            flag = true;
            break;
        }
    }
    if(!flag){
        System.out.println("查无此人");
    }
    sc.close();
}

}

💡踩坑提醒:

containsKey快速判断key是否存在;根据value查询必须遍历,Map没有直接根据value查找的方法。

思考题

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

A:Map是双列集合,存储key-value键值对;List、Set是单列集合,只存单个元素。List有序可重复;Set不可重复;Map的key不可重复。

结语:本篇是Map最基础入门代码,两种遍历是必考。下一篇BankUser银行用户管理系统!

相关推荐
杨凯凡44 分钟前
Spring Framework 7 API 版本管理实战:请求头路由、兼容迁移与废弃策略
java·rest api·springframework·spring boot 4·api版本管理
T_Wizard1 小时前
同一个问题写了 4 遍:官方 SDK / HTTP / Spring AI / LangChain4j,到底该选哪个
java·ai编程
hai_android1 小时前
AudioTrack 深度解析:从原理到实战
android·java·kotlin
斯维赤2 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构
aiks_yuan4 小时前
Java CPU 100% 怎么排查:JDK 11 起 jstack 自带线程 CPU 时间,不用再 top -H 换算十六进制(JDK 8、11、17 实测)
java
Flynn Liang6 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
Flynn Liang6 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
聪明的笨猪猪7 小时前
实际工程问题:AI生成Redis分布式锁的原子性缺陷导致库存超卖
java·经验分享·面试·ai编程
软件技术NINI7 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设