A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package Container;

  2. import java.util.HashSet;
  3. import java.util.Iterator;


  4. /*
  5. |--Set:元素无序,且不能重复。
  6.         |--HashSet:底层结构是哈希表。
  7.         |--TreeSet:
  8. Set集合的功能和Collection是一致的。
  9. */


  10. class Person1//定义人对象
  11. {
  12.         private String name;
  13.         private int age;
  14.        
  15.         Person1(String name, int age)
  16.         {
  17.                 this.name = name;
  18.                 this.age = age;
  19.         }
  20.        
  21.         public boolean equals(Object obj)//重写equals方法。
  22.         {
  23.                 if(!(obj instanceof Person))
  24.                         return false;
  25.                
  26.                 Person1 p = (Person1)obj;
  27.                 System.out.println(this.name+"----vs----"+p.name);
  28.                 return this.name.equals(p.name)&&this.age==p.age;
  29.                
  30.         }
  31.        
  32.         public int hashCode()//覆盖hashCode重新计算哈希值
  33.         {
  34.                 System.out.println("wo lai jisuan hash!!");
  35.                 return 60;
  36.         }
  37.        
  38.         public String getName()
  39.         {
  40.                 return name;
  41.         }
  42.         public int getAge()
  43.         {
  44.                 return age;
  45.         }
  46. }

  47. public class HashSetDemo {
  48.        
  49.         public static void sop(Object obj)//打印
  50.         {
  51.                 System.out.println(obj);
  52.         }

  53.         public static void main(String[] args) {
  54.                 HashSet<Person1> hs = new HashSet<>();
  55.                
  56.                 hs.add(new Person1("lisa01",21));
  57.                 hs.add(new Person1("lisa02",21));
  58.                 hs.add(new Person1("lisa03",21));
  59.                 hs.add(new Person1("lisa04",21));
  60.                
  61.                 for(Iterator<Person1>it = hs.iterator();it.hasNext();)
  62.                 {
  63.                         Person1 p = it.next();
  64.                         sop(p.getName()+"--------"+p.getAge());
  65.                 }

  66.         }

  67. }
复制代码

4 个回复

正序浏览
阳光下的小树33 发表于 2015-8-18 16:55
这样写是不是效率不高   所有德hashcode都相等  就会比较equals  这个效率是不是很低 ...

这只是个学习用的例子,真正的情况肯定不是所有的hash值一样
回复 使用道具 举报
这样写是不是效率不高   所有德hashcode都相等  就会比较equals  这个效率是不是很低
回复 使用道具 举报
巧克黑力 发表于 2015-8-18 10:01
if(!(obj instanceof Person))
你定义Person1这里用person。  肯定不对啦,,,
〈>不要 ...

恩恩  后来我发现了
回复 使用道具 举报
                if(!(obj instanceof Person))
你定义Person1这里用person。  肯定不对啦,,,
〈>不要带这种括号
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马