/*HashSet 基本操作
* --set:元素是无序的,存入和取出顺序不一致,元素不可以重复
* (通过哈希值来判断是否是同一个对象)
* ----HashSet:底层数据结构是哈希表,
* 保证数据唯一性的方法是调用存入元素的hashCode()方法
* 和equals(Object obj)方法
* HashCode值相同,才会调用equals方法
*
* */
1 import java.util.HashSet; 2 import java.util.Iterator; 3 public class StudentCode { 4 5 public static void main(String []args){ 6 //定义HashSet,并添加数据 7 HashSet hs=new HashSet(); 8 hs.add(new Person("lisi",11)); 9 hs.add(new Person("zhangsan",22)); 10 hs.add(new Person("lisi",22)); 11 hs.add(new Person("lisi",11)); 12 //遍历数据(在用迭代器输出数据时,只能用迭代器进行数据操作:增删改查,不可用对象进行操作) 13 for(Iterator it=hs.iterator();it.hasNext();){ 14 Person p=(Person)it.next(); 15 System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge()); 16 } 17 } 18 } 19 class Person{ 20 private String name; 21 private int age; 22 Person(String name,int age){ 23 this.name=name; 24 this.age=age; 25 } 26 public String getName(){ 27 return this.name; 28 } 29 public int getAge(){ 30 return this.age; 31 } 32 //重写hashCode()方法,返回一个固定的哈希值 33 public int hashCode(){ 34 return 60; 35 } 36 //重写equals(Object obj)方法,定义所需要的变量比较 37 public boolean equals(Object obj){ 38 //判断传入的Obj是否是由Person下转型的变量 39 if(!(obj instanceof Person)) 40 return false; 41 //对传入对象上转型为Person对象 42 Person p=(Person)obj; 43 //判断两个对象是否名字和年龄相等,相等则认为是同一个对象 44 return this.name.equals(p.getName())&&this.age==p.getAge(); 45 } 46 }