/*
|--Set :元素是无序(存入和取出的顺序不一定一致),元素不可用重复
|--HashSet :底层数据结构是哈希表
HashSet是如何保证元素唯一性?
是通过元素的两个方法, hashCode 和 equals 来完成
如果元素的HashCode 值相同,才会判断equals是否为true
如果元素的hashCode值不同 ,才会调用equals
注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode 和 equals
|--TreeSet
Set 集合的功能和Coll
*/
import java.util.*;
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public boolean equals(Object obj)
{
if(!( obj instanceof Person))
return false;
Person p = (Person)obj;
return (this.name.equals(p.name) && this.age == p.age);
}
public int hashCode()
{
return this.name.hashCode();//此处调用String 类型的hashCode
//不用这个也行 只不过用来做个标志 区别不同对象
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class HashSetDemo
{
public static void main(String []args)
{
HashSet hs = new HashSet();
hs.add(new Person("Person1",11));//存入四个人
hs.add(new Person("Person2",11));
hs.add(new Person("Person3",11));
hs.add(new Person("Person1",11));
Iterator it = hs.iterator();//迭代器
while( it.hasNext())//循环输出
{
Person p = (Person)it.next();
sop( p.getName() + " --- " + p.getAge());
}
sop(hs.contains(new Person("Person1",11)));
sop(hs.remove(new Person("Person1",11)));
sop(hs.contains(new Person("Person1",11)));
}
public static void sop(Object obj)//定义一个输出函数
{
System.out.println(obj);
}
}