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

第84行代码为什么es.getValue()为什么调用不了name属性,代码见正文

package com.imooc.Map;


import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

import com.imooc.collection.Student;

public class MapTest {
	public Map<String,Student>students;
	/*
	 * 在构造器中初始化students属性
	 */
	public MapTest(){
		this.students=new HashMap();
	}
	/*
	 * 添加学生:
	 * 首先检查是否被占用,如果被占用,输出提示信息
	 * 如若没有,将该学生信息输入到学生的属性中,并打印出学生信息
	 */

	public void TestPut(){
		int i=0;
		while(i<3){//此处用while循环更加合适!!!
		System.out.println("请输入学号:");
		Scanner input=new Scanner(System.in);
		String id=input.next();
		Student newStudent=students.get(id);
		if(newStudent==null){
		System.out.println("请输入姓名:");
		
		String name=input.next();
		//创建学生对象
		Student a=new Student(id,name);
		students.put(id, a);
		System.out.println("成功添加学生"+students.get(id).name);
		i++;
		}else{
			System.out.println("您的id已被占用!");
			continue;
		}  		
		}	
	}
	public void testKeySet(){
		//通过keySet方法,返回Map中的所有"键"的Set集合
		Set<String> keySet=students.keySet();
		//遍历keySet,取得每个key值,再调用get方法取得每个键对应的value
		for(String stuID:keySet){
			Student st=students.get(stuID);
			System.out.println(st.name);			
		}		
	}
	
	/*
	 * 删除Map中的映射
	 */
	public void testRemove(){
		System.out.println("请输入要删除的id:");
		while(true){
		Scanner input=new Scanner(System.in);
		String id=input.next();
		Student st=students.get(id);
		if(st==null){
			System.out.println("您输入的id不存在,请重新输入:");
			continue;
		}
		students.remove(id);
		System.out.println("已经成功删除"+st.name);
		break;
		}
	}
	/*
	 * 通过entrySet方法遍历Map
	 */
	public void testEntrySet(){
		//通过entrySet方法返回所有的键值对
		Set<Entry<String, Student>> entrySet=students.entrySet();
		for(Entry es:entrySet){
			System.out.println("key值:"+es.getKey());
			System.out.println("Value值:"+es.getValue());	
		}
		
	}
	
	

	
	public static void main(String[] args){
         MapTest mt=new MapTest();
         mt.TestPut();
         mt.testKeySet();	
         mt.testRemove();
         mt.testEntrySet();
	}
}

Student代码:

package com.imooc.collection;

import java.util.HashSet;
import java.util.Set;

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

}


正在回答

2 回答

给Entry指定一下泛型

for(Entry<String, Student> es:entrySet){
    System.out.println("key值:"+es.getKey());
    System.out.println("Value值:"+es.getValue().name);   
}


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

qq_析木_0 提问者

非常感谢!那是不是定义Entry类型就要指定泛型呢?
2017-02-18 回复 有任何疑惑可以回复我~
#2

ziom 回复 qq_析木_0 提问者

这个要看实际情况,你没定义它不是也没报错吗
2017-02-18 回复 有任何疑惑可以回复我~
#3

ziom 回复 qq_析木_0 提问者

求采纳
2017-02-18 回复 有任何疑惑可以回复我~
#4

qq_析木_0 提问者

非常感谢!
2017-02-18 回复 有任何疑惑可以回复我~
查看1条回复

es.getValue() 得到的是Student对象,用es.getValue().name获得Student的name属性。

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

举报

0/150
提交
取消

第84行代码为什么es.getValue()为什么调用不了name属性,代码见正文

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