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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王舜民 中级黑马   /  2012-9-15 06:57  /  1123 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
class  TestRen
{
        public static void main(String[] args)
        {
                Person p0= new Person();
                p0.id=1;
                p0.name= new Name();
                p0.name.firstName="jams";
                p0.name.lastName="Green";

                Person p1 = new Person();
                p1.id=1;
                p1.name = new Name();
                p1.name.firstName="jams";
                p1.name.lastName="Green";

                Person p2 = new Person();
                p2.id=1;
                p2.name = new Name();
                p2.name.firstName="三";
                p2.name.lastName="张";

                Person p3 = new Person();
                p3.id=1;
                p3.name = new Name();
                p3.name.firstName="四";
                p3.name.lastName="李";

                Set set = new HashSet();

                set.add(p0);//这边元素id和name为什么都能添加进去
                set.add(p1);
                set.add(p2);
                set.add(p3);


                System.out.println(set.size());
        }
}


class Person
{
        int id;
        Name name;

        public int hashCode(){
                final int num = 13;
                return num*id+name.hashCode();
}
        public boolean equals(Object obj){

                if(obj==this){//这个this是什么
                        return true;
                }
                if(obj instanceof Person){  //instanceof在jdk哪边
                        Person p = (Person)obj;//这边为什么要转换?
                        return (this.id==pp.id && this.name.equals(p.name));
                }
                return false;
        }
}

1 个回复

正序浏览
之前的发错了。
/*
要求创建3个人,将这3个人装入Set集合中,要维护其相等性.

                如果人的id与name相出认为是同一个人.
*/
import java.util.*;
class Test3
{
        public static void main(String[] args)
        {
                Person p0=new Person();
                p0.id=1;
                p0.name=new Name();
                p0.name.firstName="jams";
                p0.name.lastName="Green";

                Person p1=new Person();
                p1.id=1;
                p1.name=new Name();
                p1.name.firstName="jams";
                p1.name.lastName="Green";

                Person p2=new Person();
                p2.id=2;
                p2.name=new Name();
                p2.name.firstName="三";
                p2.name.lastName="张";

                Person p3=new Person();
                p3.id=3;
                p3.name=new Name();
                p3.name.firstName="四";
                p3.name.lastName="李";

                Set set=new HashSet();

                set.add(p0);
                set.add(p1);
                set.add(p2);
                set.add(p3);

                System.out.println(set.size());

        }
}


class Person
{
         int id;
         Name name;

         public int hashCode(){
                final int num=13;

                return num*id+name.hashCode();//这边的原理是什么越详细越好?
         }
         public boolean equals(Object obj){
               
                if(obj==this){//这个this是什么
                        return true;
                }
                if(obj instanceof Person){instanceof在jdk哪边
                        Person p=(Person)obj;//这边为什么要转换?
                        return (this.id==p.id&&this.name.equals(p.name));
                }
                return false;
         }
}


class Name
{
         String firstName;
         String lastName;

         public int hashCode(){       

                return firstName.hashCode()+lastName.hashCode();
         }

        public boolean equals(Object obj){
               
                if(obj==this){
                        return true;
                }
                if(obj instanceof Name){
                        Name n=(Name)obj;
                        return this.firstName.equals(n.firstName)&&this.lastName.equals(n.lastName);
                }
                return false;
         }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马