为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

3 回答

逐个问题回答:

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


1 回复 有任何疑惑可以回复我~
#1

qq_520_6 提问者

非常感谢!
2016-01-31 回复 有任何疑惑可以回复我~
#2

梁XX 回复 qq_520_6 提问者

一起进步嘛!周末快乐
2016-01-31 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

qq_520_6 提问者

不好意思 再请教一下 那entrySet keySet这些方法呢
2015-12-15 回复 有任何疑惑可以回复我~
#2

Caballarii 回复 qq_520_6 提问者

自己定义的都可以,对象自带的方法改不了
2015-12-15 回复 有任何疑惑可以回复我~
#3

qq_520_6 提问者 回复 Caballarii

那怎么确定哪些是对象自带的方法呢
2015-12-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信