黑马程序员技术交流社区
标题:
本人对hashset的理解,并附加代码
[打印本页]
作者:
草上飞
时间:
2012-10-28 15:37
标题:
本人对hashset的理解,并附加代码
import java.util.*;
/*
|set--:元素是无序的(插入和取出的顺序不一样),元素不可以重复
|--hashset :底层数据结构哈希表
hashset 是如何保证元素师唯一的呢
是通过元素的两个方法,hashCode和equals来完成的
如果元素hashCode值相同,才会判断equals是否true
如果元素hashcode不同,不会的用equals
|--Treeset:
set集合和collection是一致的
*/
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public int hashCode()//判断元素唯一性必须要重写hashCode值方法
{
// System.out.println(this.name+"===");
return name.hashCode()+age*35;
}
public boolean equals(Object obj)//这里必须要重写equals方法
{
if(!(obj instanceof Person))
return false;
Person p=(Person)obj;
//System.out.println(this.name+"--99999-"+p.name);
return this.name.equals(p.name)&&this.age==p.age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class Hashsettest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
HashSet hs=new HashSet();
hs.add(new Person("li1",23));
hs.add(new Person("li2",24));
hs.add(new Person("li2",24));
hs.add(new Person("li3",25));
hs.add(new Person("li3",25));
hs.add(new Person("li4",26));
for (Iterator it=hs.iterator();it.hasNext() ; )
{
Object obj=it.next();
Person p=(Person)obj;
sop(p.getName()+"---"+p.getAge());
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2