/*
学生属性:姓名、年龄
注意:姓名和年龄相通的视为同一个学生
保证学生的唯一性
1、描述学生
2、定义map容器,将学生作为键,所在城市作为值,存入
3、获取map集合中的元素
先不修改hashCode和equals,碰到了问题
*/
import java.util.*;
class Student
{
private String name;
private int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public void setName(String name)
{
this.name=name;
}
public void setAge(int age)
{
this.age=age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class HashMap
{
public static void main(String[] args)
{
HashMap hm=new HashMap();
hm.put(new Student("李世民",18),"长安");
hm.put(new Student("朱元璋",20),"南京");
hm.put(new Student("嬴政",25),"咸阳");
hm.put(new Student("曹操",30),"许都");
Set keyset=hm.keySet();
Iterator it=keyset.iterator();
while(it.hasNext())
{
Student stu=(Student)it.next();
String value=hm.get(stu);
System.out.println(stu.getName()+".."+stu.getAge()+".."+value);
}
}
}

这是为什么?
还有,我加了泛型后代码如下:
import java.util.*;
class Student
{
private String name;
private int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public void setName(String name)
{
this.name=name;
}
public void setAge(int age)
{
this.age=age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class HashMap
{
public static void main(String[] args)
{
HashMap<Student,String> hm=new HashMap<Student,String>();
hm.put(new Student("李世民",18),"长安");
hm.put(new Student("朱元璋",20),"南京");
hm.put(new Student("嬴政",25),"咸阳");
hm.put(new Student("曹操",30),"许都");
Set<Student> keyset=hm.keySet();
Iterator<Student> it=keyset.iterator();
while(it.hasNext())
{
Student stu=(Student)it.next();
String value=hm.get(stu);
System.out.println(stu.getName()+".."+stu.getAge()+".."+value);
}
}
}
为什么又会提示:

------解决思路----------------------
吧HashMap换个名字就正确了
------解决思路----------------------
类不要起这样的名字(HashMap)换个比如:HashMapTest
你这样会和下面的HashMap冲突