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

© java—family 中级黑马   /  2014-7-25 17:22  /  1120 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

hashset  存储person对象时   姓名和年龄相同     但是还是存进去了  怎么回事     是不是 new地址也参加了 hashcode 运算的     怎么样才能在 hashset中存唯一的person 。


package cn.itcast.collection;

import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;

public class HashSetText {
//1.建立一个集合hashset  向里面添加元素
//2.往hashSet集合中存储Person对象。如果姓名和年龄相同,视为同一个人。视为相同元素。 hashSet  里用hashcode  equale 方法。
        public static void main(String[] args) {
                 //定义一个HashSet 类
                HashSet<Person>  hs = new HashSet<Person>();
                //添加元素
                hs.add(new Person("lisi", 25));
                hs.add(new Person("李四", 26));
                hs.add(new Person("旺旺", 21));
                hs.add(new Person("王五", 35));
                hs.add(new Person("狗蛋", 29));
                hs.add(new Person("lisi", 25));
                //迭代取出
                Iterator<Person> it = hs.iterator();
                while(it.hasNext()){
                        Person p = (Person)it.next();
                        System.out.println(p.getName()+":"+p.getAge());
                }
               
                }


2 个回复

倒序浏览
你的person类有没有重新hashcode方法,如果没有的话,只要使用new 产生的元素的hash值就是不一样的
回复 使用道具 举报
hashSet集合判断元素是否相同时实现comparable和equals,person本身没有比较性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马