问答详情
源自:5-3 学生选课---删除 Map 中的学生

有关本节中有关增加删除的方法名

请问 testPut是增加的方法名 可以改为add 或者addd以及其他随意的名字吗

提问者:qq_520_6 2015-12-15 11:36

个回答

  • 梁XX
    2016-01-27 23:28:43
    已采纳

    逐个问题回答:

    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();
    				
    			}
    			
    }


  • bryan4it
    2016-01-08 17:15:39

    这个你就看你用的是哪个对象调用的方法啊,比如你用自定义的Student的实例,调用实例方法,当然就是这个对象的啦,而你使用Map的,比如keySet()方法,那就是Map自带的方法啊

  • Caballarii
    2015-12-15 11:37:56

    当然可以,注意调用的时候对应就行