qq_520_6
2015-12-15 11:36
请问 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自带的方法啊
当然可以,注意调用的时候对应就行
Java入门第三季
409776 学习 · 4546 问题
相似问题