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 }