黑马程序员技术交流社区
标题:
问一道集合的问题?
[打印本页]
作者:
王舜民
时间:
2012-9-15 06:57
标题:
问一道集合的问题?
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;
}
}
作者:
王舜民
时间:
2012-9-15 07:16
之前的发错了。
/*
要求创建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;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2