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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 帅气的冬瓜 中级黑马   /  2013-11-21 18:35  /  1410 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 帅气的冬瓜 于 2013-11-22 12:15 编辑

package Collections;


import java.util.HashSet;
import java.util.Iterator;
public class HashSetDemo {
/**
  *
  * HashSet保证元素唯一,通过hashcode和equals来完成
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
   HashSet hs=new HashSet();
   hs.add(new Person1("wangwu",23));
   hs.add(new Person1("lisi",33));
   
   hs.add(new Person1("zhangsan",20));
   hs.add(new Person1("zhaoqian",20));
   hs.add(new Person1("lisi",33));
   Iterator it=hs.iterator();
   while (it.hasNext()){
    Person1 p=(Person1)it.next();
    sop(p.getName()+"-----"+p.getAge());   
   }  
}
public static void sop(Object obj){
  System.out.println(obj);
}
}
  class Person1{
private  String name;
private int age;
Person1(String name,int age){
  this.name=name;
  this.age=age;
}


public int hashCode(){
  System.out.println(this.name+".....hashCode()");
  //return name.hashCode()+age*34;
  return 60;
}
public  boolean eauals(Object obj){
  if (!(obj instanceof Person1))
   return false;
  Person1 p=(Person1)obj;
  System.out.println(this.name+"....eauals....."+p.name);
  return this.name.equals(p.name)&&this.age==p.age;
}

public String getName() {
  return name;
}

public void setName(String name) {
  this.name = name;
}

public int getAge() {
  return age;
}

public void setAge(int age) {
  this.age = age;
}

}
运行结果:
wangwu.....hashCode()
lisi.....hashCode()
zhangsan.....hashCode()
zhaoqian.....hashCode()
lisi.....hashCode()
lisi-----33
zhaoqian-----20
zhangsan-----20
lisi-----33
wangwu-----23                问题来了  :为什么重复元素没有去掉,很纳闷






评分

参与人数 1技术分 +1 收起 理由
FFF + 1 下次代码要写代码框里哦~

查看全部评分

2 个回复

倒序浏览
equals写错了。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 新人回答鼓励分~

查看全部评分

回复 使用道具 举报
太感谢了      我说怎么没有调用equals呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马