黑马程序员技术交流社区

标题: HashSet存person对象 [打印本页]

作者: java—family    时间: 2014-7-25 17:22
标题: HashSet存person对象
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());
                }
               
                }



作者: idency    时间: 2014-7-25 17:28
你的person类有没有重新hashcode方法,如果没有的话,只要使用new 产生的元素的hash值就是不一样的
作者: 佛山java爱好者    时间: 2014-7-25 17:33
hashSet集合判断元素是否相同时实现comparable和equals,person本身没有比较性




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2