java HashSet 练习

来源:互联网 发布:淘宝机车头盔 编辑:程序博客网 时间:2024/05/17 23:44


HashSet练习

import java.util.*;
/*
往hashSet集合中存入自定对象
姓名和年龄相同为同一个人,重复元素。
*/
class Person
{
 private String name;
 private int age;
 Person(String name,int age)
 {
  this.name = name;
  this.age = age;
 }
 public String getName()
 {
  return name;
 }
 public int getAge()
 {
  return age;
 }
 public int hashCode()//因为HashSet里的元素是按哈希表存储的里面的,哈希值不同则直接存进去,相同的话则
 {                       //还要判断equals,不重写的话则是用的是obj中的HashCode方法也就会出现下面1.2的问题了
  System.out.println(this.name+this.name.hashCode());
  return name.hashCode()+age;
 }
 public boolean equals(Object obj)                                
 {
  //sop(this.name+"....."+p.name);
  if(!(obj instanceof Person))
   return false;
  Person p = (Person)obj;
  System.out.println(this.name+"....."+p.name);
  return this.name.equals(p.name)&&this.age==p.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("java01",11));
  hs.add(new Person("java02",12));
  hs.add(new Person("java03",13));
  hs.add(new Person("java04",14));//1.如果不判断hashCodeh和equals,那么1和2因为都是new出来的元素,
  hs.add(new Person("java04",14));//2.所以它们是两个不同的的对象哈希值不同,所以都等存进去
  

  Iterator it = hs.iterator();
   while(it.hasNext())
  {
   Person p = (Person)it.next();

   sop(p.getName()+"...."+p.getAge());
  }
 }
 
}

原创粉丝点击