Map中的key值是自己设定的吗

难道这里的key值是Map中存放的Student的id属性? 

Student类代码如下:

/**
 * 学生类
 * @author yang
 *2017年1月9日
 */
public class Student {
 public String id;
 public String name;
 public Set<Course>courses;
 public Student(String id,String name){
  this.id=id;
  this.name=name;
  this.courses=new HashSet<Course>();
 }
}




public MapTest(){
  students=new HashMap<String,Student>();
 }
 
 /**
  * 测试添加:键入学生ID,判断是否被占用,
  * 若未被占用,则输入姓名,创建新学生对象,并且添加到students中
  * @param args
  */
 public void testPut(){
  Scanner console=new Scanner(System.in);
  int i=0;
  while(i<3){
   System.out.println("请输入学生ID");
   String ID=console.next();
   Student st=students.get(ID);
   if(st==null){
   //提示输入学生姓名
    System.out.println("请输入学生姓名");
    String name=console.next();
    Student newStudent=new Student(ID, name);
    students.put(ID, newStudent);
    System.out.println("成功添加学生"+students.get(ID).name+students.get(ID).id);
    i++;
   }
   else{
    System.out.println("该学生ID已被占用");
    continue;
   }
  }
 }
 
 /**
  * 测试Map的keySet方法
  * @param args
  */
 public void testKeySet(){
  //通过keySet方法,返回Map中的所有“键”的Set集合
  //Map的keySet方法,返回的是Map中所有"键"的Set集合,Set集合哟!!!
  Set<String> keySet=students.keySet();
  //遍历KeySet,取得每一个键,再调用get方法取得每个键对应的value。
  System.out.println("总共有"+students.size()+"个学生");
  for(String stuId:keySet){
   Student st=students.get(stuId);
   if(st!=null){
   System.out.println("学生"+st.name);
   }
  }
 }

飞行烤鸭
浏览 2608回答 2
2回答

快乐的时光

Map的key和value依据你的需求你自己设定的,例如上面的代码 students=new HashMap<String,Student>();你限定key为学生学号,为String类型,value为student实体类,为Student类型.主要是依据你的需求自己设定的。

路过转

map中key和value的数据类型是写代码的人自己设定的,然后根据设定好的数据类型来输入数据
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java