A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© LLQALLQ 中级黑马   /  2016-3-29 23:31  /  451 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家帮忙看一下这个代码,为什么运行的时候还有重复元素啊
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;
        }
}

1 个回复

倒序浏览
不明觉厉
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马