正文
✅ 实验验证题1:
Map<Integer,String>,key=工号,value=员工姓名
功能:
-
key遍历、entry键值对遍历两种方式
-
输入工号查询名字,无则输出查无此人
-
输入姓名查询员工,无则输出查无此人
核心知识点: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银行用户管理系统!