大家帮忙看一下这个代码,为什么运行的时候还有重复元素啊
package day15;
/*
* 每一个学生都有自己的归属地
* 学生Student 地址String
* 学生属性:姓名和年龄
* 注意:姓名和年龄相同视为同一个人
* 保证学生的唯一性
*
*
* 1,描述学生
* 2.定义一个map容器,将学生作为键,地址作为值存入集合中
* 3,获取集合中的元素
*
* */
import java.util.*;
public class MapTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<Students,String> map = new HashMap<Students,String>();
map.put(new Students("zhangsan",23), "beijing");
map.put(new Students("wangwu",27), "shanghai");
map.put(new Students("zhouqi",33), "dalian");
map.put(new Students("zhaoliu",44), "shandong");
map.put(new Students("zhouqi",33), "dalian");
Set<Students> keyset = map.keySet();
Iterator<Students> it = keyset.iterator();
while(it.hasNext()){
Students s = it.next();
String adress = map.get(s);
System.out.println("学生:"+s.getName()+":"+s.getAge()+"....."+"地址:"+adress);
}
}
}
class Students implements Compareble{
private String name;
private int age;
Students(String name,int age){
this.name = name;
this.age = age;
}
public int compareTo(Students s){
int num = new Integer(this.age).compareTo(new Integer(s.age));
if(num==0)
return this.name.compareTo(s.name);
return num;
}
public int hashCode(){
return this.getName().hashCode()+age*60;
}
public boolean equals(Object obj){
if(!(obj instanceof Students))
throw new ClassCastException("类型不匹配");
Students s = (Students)obj;
return this.name.equals(s.name) && this.age==s.age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String toString(){
return name+"...."+age;
}
}
|
|