问题描述
- 最后一句的输出应该怎么写才会有键值对输出? java.lang.ClassCastException
-
public class Student {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Student(String name, String sex) {
super();
this.name = name;
this.sex = sex;
}
public Student() {
super();
}
}public class MapStudent {
public static void main(String[] args) { HashMap stu=new HashMap(); stu.put("jack", new Student("小明","男")); stu.put("tom", new Student("小李","女")); stu.put("lucy", new Student("小红","女")); Set s=stu.keySet(); Iterator it=s.iterator(); while(it.hasNext()){ String key=(String)it.next(); String value=(String)stu.get(key); System.out.println(key+value); } }
}
解决方案
默认情况下直接输出某个对象就是调用对象的toString方法的,那你给Student添加一个toString方法,如下:
public String toString(){
return name+","+sex
}
解决方案二:
HashMap存储的是Student类型的对象,不能转换成String的,你取值时value只能转换成Student或者Object.
while(it.hasNext()){
String key=(String)it.next();
Student value=(Student)stu.get(key);
System.out.println(key+value);
}
解决方案三:
这样输出打印出的是内存地址,怎么才能打印出jack,小明,男?
解决方案四:
student重写tostring'E5??以吧
时间: 2024-08-28 16:00:24