请问 testPut是增加的方法名 可以改为add 或者addd以及其他随意的名字吗
逐个问题回答:
Q:testPut是增加的方法名 可以改为add 或者addd以及其他随意的名字吗
A: HashMap 类的方法已经写好,所以你调用HashMap 类的方法的时候当然要用它自己的名字,例如
Haspmap实例名字.get(KEY)----返回对应的对象方法 ;
Haspmap实例名.put(Key, Value)----修改对应键的 Value;
也就是你在学校认识了的同学,当然要叫他爸爸妈妈为她起好的名字才会搭理你。
Q:那entrySet keySet这些方法呢 ?
A:首先 Haspmap实例名字.EntrySet <K,V> 也是HashMap 类已经写好的方法,返回一个 Entry<K,Y> 类型的对 象object.
Set<Entry<String,Student>> studentList =students.entrySet(); //Haspmap实例名字.EntrySet <K,V> () 方法用于遍历啊, 所以我就取了名字studentList // 类名、方法名、变量名(studentList )是自己取得名字,因此keySet 可以自己取名
甩上我自己写的运行成功的代码块,跟老师的有点不同,但有注释哦,可以帮你换位发现一下:
你可以参考参考,有兴趣可以一起交流:
package com.imooc.season3.CollectionDemo; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.Set; /* * Map的测试类别 * * ①建立并初始化存储学生信息的Map集合 * ②创建存储学生的方法,并判断输入的信息是否已存在 * ③显示学生列表 * ④删除学生 * ⑤显示学生列表 */ public class StudentMap { public Map<String,Student> students; public Student student; public StudentMap (){ students =new HashMap<String,Student>(); } public void SetStudent(){ System.out.println("欢迎输入学生信息,请输入将要录入的学生数量:"); Scanner inputNo =new Scanner(System.in); int studentNo=0; try{studentNo =Integer.parseInt(inputNo.next()); } //将字符串转换成整型 catch(Exception e){ e.printStackTrace(); //如果输入其它的文字就会出错。 System.out.println("请输入数字"); } System.out.println("你将输入"+studentNo+"位学生的信息"); for(int i =1; i<=studentNo;i++){ System.out.println("请输入第"+i+"位学生的ID"); Scanner inputStudent =new Scanner(System.in); String studentID=inputStudent.next(); if(students.isEmpty()){ //判断Map集合是否为空,如果学生的集合为空的条件下,直接添加元素 System.out.println("请输入第"+i+"位学生的姓名"); Scanner inputStudentName =new Scanner(System.in); String StudentName=inputStudent.next(); Student studentInfo =new Student(studentID , StudentName); students.put(studentID, studentInfo); } else{ while(true){ if(students.get(studentID)==null){ System.out.println("请输入第"+i+"位学生的姓名"); Scanner inputStudentName =new Scanner(System.in); String StudentName=inputStudent.next(); Student studentInfo =new Student(studentID , StudentName); students.put(studentID, studentInfo); break; }else{ System.out.println("该学生ID已经存在,请重新输入"); continue; } } } } } public void studentList(){ System.out.println("学生数据库有如下:"); System.out.println("============="); Set<String> keyID =new HashSet<String>(); keyID.addAll(students.keySet()); //HashSet.add():Adds all of the elements in the specified collection to this set //HashMap.keySet():Returns a Set view of the keys contained in this map. for(String sid:keyID){ Student st =students.get(sid); System.out.println("学生ID:"+st.studentId+" -"+"学生姓名"+st.studentName); } } public void deleteStudent(){ while(true){ System.out.println("请输入要删除的学生的ID"); System.out.println("============="); Scanner inputStudentNo =new Scanner(System.in); String StudentNo=inputStudentNo.next(); if( students.get(StudentNo)==null){ System.out.println("请重新输入删除的学生的ID"); continue; }else{ Student st =students.get(StudentNo); students.remove(StudentNo);//map.remove(key) System.out.println("删除的学生 ID:"+StudentNo+st.studentName+"成功!!"); break; } //遇到空指针异常,先保存要被删除学生的信息,再移除 } } public void modifyStudent(){ while(true){ System.out.println("请输入需要修改信息的学生ID"); System.out.println("============="); Scanner inputStudentID =new Scanner(System.in); String StudentNo=inputStudentID.next(); if( students.get(StudentNo)==null){ System.out.println("请重新输入要修改的学生ID"); continue;} //student.studentId=StudentNo; 空指针类型,对象未初始化, //不能对其存储数据(数组初始化、对象初始化才能保存数据) System.out.println("请输入需要修改的学生姓名"); Scanner inputStudentInfo =new Scanner(System.in); String StudentInfo=inputStudentInfo.next(); student= new Student(StudentNo,StudentInfo); students.put(StudentNo,student); //map.put(Key,Value) 修改对象的Value值. System.out.println("修改的学生 ID:"+StudentNo+" "+student.studentName+"成功!!"); break; } } public void studentList02(){ System.out.println("学生信息如下"); System.out.println("============="); Set<Entry<String,Student>> studentList =students.entrySet(); //Map.entrySet()方法遍历:Returns a Set view of the mappings contained in this map. for(Entry<String,Student> sList: studentList){ //Entry<T,T> 是一个类型 System.out.print("学生ID:"+sList.getKey()); //Entry.getKey()得到键 System.out.print(" "); System.out.println("学生姓名:"+sList.getValue().studentName); //Entry.getValue()得到Value } } public static void main(String args[]){ StudentMap t1 =new StudentMap(); t1.SetStudent(); t1.studentList(); // t1.SetStudent(); t1.deleteStudent(); t1.studentList02(); t1.modifyStudent(); t1.studentList02(); } }
这个你就看你用的是哪个对象调用的方法啊,比如你用自定义的Student的实例,调用实例方法,当然就是这个对象的啦,而你使用Map的,比如keySet()方法,那就是Map自带的方法啊
当然可以,注意调用的时候对应就行