本帖最后由 冯心程 于 2012-9-8 01:30 编辑
哈希值是哈希值 是哈希算法算出来的跟你说的地址值不一样
HashSet 存储的时候利用了HashCode方法 算出其对应的哈希值 根据哈希值进行储存 如果哈希值相同则不存。。如果是一个对象。。哈希值如果相等则还要进行进一步判断利用equals方法 如果相同则不存储具体应用中equals这个不是比的地址 而是复写它比较那些哈希值被判断相等的元素 进行次要条件的判断 比如person("张三丰",20) person("张四丰",20) 张三丰和张四丰的年龄哈希值相等 主要条件相等就要再用equals判断定义的次要条件name 不相等则存入 相等则不存
补充:::::::
妹子自己亲自写个传入对象并比较元素的代码就知道了
实际应用中往集合里传入对象是这样的
// 往ArrayList集合中存储自定义对象。Person.
ArrayList list = new ArrayList();
list.add(new Person("张一丰", 50));
list.add(new Person("张二丰", 60));
list.add(new Person("张三丰", 90));
list.add(new Person("张三丰", 90));
//集合中最终存储都是对象的引用。
传入的都是Person 但是每个地址都不相等 如果不复写equals 。怎么比较都不会相等 而其中张三丰90岁的相同元素就有重复
|