您的位置:首页 > 编程语言 > Java开发

java基础入门-----hashset2

2013-10-01 21:16 369 查看
import java.util.*;

//set:元素是无序的,元素不能重复
//hashset:底层数据是哈希表结构
/*
* hashset如何保证元素唯一性?
* 		   是通过元素两个方法 hashcode和equal完成的
*      1.先判断hashcode是不是相等 ,如果相等就调用equal判断
*      2.如果hashcode不相等,不调用equal

*      注意:判断元素是否存在或删除元素等操作,都是先调用hascode再调用equal方法
* */
class HashSet2
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
HashSet hs = new HashSet();
hs.add(new Person1("aaa",20));
hs.add(new Person1("bbb",21));
hs.add(new Person1("bbb",21));
hs.add(new Person1("ccc",22));
hs.add(new Person1("ddd",23));

Iterator it = hs.iterator();

while(it.hasNext())
{
Person1 p = (Person1)it.next();
sop(p.getName()+"..."+p.getAge());
}
}
}
class Person1
{
private String name;
private int age;
Person1(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;
}
public int hashCode()
{
System.out.println(this.name+"...hashcode");
return name.hashCode()+age;
}
public boolean equals(Object obj) //判断是否有相同元素用的contains和除去元素的remove方法都是
//一定要object类型,因为要复写
{									//	要调用Object的equals方法 ,用对象就要重写equals方法
if(!(obj instanceof Person1))     //因为Object的equals方法是判断地址是否相同,每个new的对象地址都不同
return false;

Person1 p = (Person1)obj;
System.out.println(this.name+"..equal.."+p.name);
return this.name.equals(p.name) && this.age == p.age;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: