set里重复是指什么

[复制链接]
查看11 | 回复0 | 2015-8-8 15:53:31 | 显示全部楼层 |阅读模式
这里涉及到Object类的两个方法,equals和hashcode。set中不能存储相同的对象,这里的相同判断的依据是equals方法,如a.equals(b)返回true,则a和b相同。虽然判断的依据是equals方法,但是这里有一个问题,如果set中原来就有1000个元素,则如果要存入新的数据,为了保证不同的元素,就要调用1000此equals方法,显然效率太低,为了提高效率,哈希码(可以通过hashcode方法得到)就在这里产生作用了,它根据对象的哈希码,找到对应的地址,如果这个地址上没有元素,则直接存储,如果已经有元素了,则调用equals方法,如果返回true,则不存储,如果返回false,则散列其它的地址。Java对于eqauls方法和hashCode方法是这样规定的:如果两个对象相同,那么它们的hashCode值一定要相同;2、如果两个对象的 hashCode相同,它们并不一定相同。 两个String相同,算重复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行