java中scanner与hashmap_Java入门第三季——Java中的集合框架(中):Map&HashMap

本文演示了如何在Java中使用Scanner类获取用户输入,并结合HashMap进行增删改查操作。通过创建MapTest类,实现了添加学生对象到HashMap,通过keySet遍历Map,删除指定ID的学生,以及修改已有映射的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 packagecom.imooc.collection;2

3 importjava.util.HashMap;4 importjava.util.Map;5 importjava.util.Map.Entry;6 importjava.util.Scanner;7 importjava.util.Set;8

9 public classMapTest {10

11 /**

12 * 用来承装学生类型对象13 */

14 public Mapstudents;15

16 /**

17 * 在构造器中初始化students属性18 */

19 publicMapTest() {20 this.students = new HashMap();21 }22

23 /**

24 * 测试添加:输入学生ID,判断是否被占用 若未被占用,则输入姓名,创建新学生对象,并且 添加到students中25 */

26 public voidtestPut() {27 //创建一个Scanner对象,用来获取输入的学生ID和姓名

28 Scanner console = newScanner(System.in);29 int i = 0;30 while (i < 3) {31 System.out.println("请输入学生ID:");32 String ID = console.next();//获取从键盘输入的ID字符串33 //判断该ID是否被占用

34 Student st = students.get(ID);//获取该键对应的value值

35 if (st == null) {36 //提示输入学生姓名

37 System.out.println("请输入学生姓名:");38 String name = console.next();//取得键盘输入的学生姓名的字符串39 //创建新的学生对象

40 Student newStudent = newStudent(ID, name);41 //通过调用students的put方法,添加ID-学生映射

42 students.put(ID, newStudent);43 System.out.println("成功添加学生:" +students.get(ID).name);44 i++;45 } else{46 System.out.println("该学生ID已被占用!");47 continue;48 }49 }50 }51

52 /**

53 * 测试Map的keySet方法,返回集合的方法54 * 通过keySet和get方法去遍历Map中的每个value55 */

56 public voidtestKeySet() {57 //通过keySet方法,返回Map中的所有“键”的Set集合

58 Set keySet =students.keySet();59 //取得students的容量

60 System.out.println("总共有:" + students.size() + "个学生!");61 //遍历keySet,取得每一个键,再调用get方法取得每个键对应的value

62 for(String stuId : keySet) {63 Student st =students.get(stuId);64 if (st != null)65 System.out.println("学生:" +st.name);66 }67 }68

69 /**

70 * 测试删除Map中的映射71 */

72 public voidtestRemove() {73 //获取从键盘输入的待删除学生ID字符串

74 Scanner console = newScanner(System.in);75 while (true) {76 //提示输入待删除的学生的ID

77 System.out.println("请输入要删除的学生ID!");78 String ID =console.next();79 //判断该ID是否有对应的学生对象

80 Student st =students.get(ID);81 if (st == null) {82 //提示输入的ID并不存在

83 System.out.println("该ID不存在!");84 continue;85 }86 students.remove(ID);87 System.out.println("成功删除学生:" +st.name);88 break;89 }90 }91

92 /**

93 * 通过entrySet方法来遍历Map94 */

95 public voidtestEntrySet() {96 //通过entrySet方法,返回Map中的所有键值对

97 Set> entrySet =students.entrySet();98 for (Entryentry : entrySet) {99 System.out.println("取得键:" +entry.getKey());100 System.out.println("对应的值为:" +entry.getValue().name);101 }102 }103

104 /**

105 * 利用put方法修改Map中的已有映射106 */

107 public voidtestModify() {108 //提示输入要修改的学生ID

109 System.out.println("请输入要修改的学生ID:");110 //创建一个Scanner对象,去获取从键盘上输入的学生ID字符串

111 Scanner console = newScanner(System.in);112 while (true) {113 //取得从键盘输入的学生ID

114 String stuID =console.next();115 //从students中查找该学生ID对应的学生对象

116 Student student =students.get(stuID);117 if (student == null) {118 System.out.println("该ID不存在!请重新输入!");119 continue;120 }121 //提示当前对应的学生对象的姓名

122 System.out.println("当前该学生ID,所对应的学生为:" +student.name);123 //提示输入新的学生姓名,来修改已有的映射

124 System.out.println("请输入新的学生姓名:");125 String name =console.next();126 Student newStudent = newStudent(stuID, name);127 students.put(stuID, newStudent);128 System.out.println("修改成功!");129 break;130 }131 }132

133 /**

134 *@paramargs135 */

136 public static voidmain(String[] args) {137 MapTest mt = newMapTest();138 mt.testPut();139 mt.testKeySet();140 //mt.testRemove();141 //mt.testEntrySet();142 //mt.testModify();143 //mt.testEntrySet();

144

145 }146

147 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值