/* |--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); } }