黑马程序员技术交流社区

标题: 有关集合的问题。 [打印本页]

作者: k1453711238    时间: 2017-8-5 14:11
标题: 有关集合的问题。
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
作者: 火小枪    时间: 2017-8-16 15:09
不同的set实现类保证元素唯一性的原理不同:
1:HastSet
    先比较两个对象的hash()值,如果不相等再比较equals()的值
2:TreeSet
    需要对象实现Comparable接口 ,或者创建TreeSet实例时传入Comparator的实例。两个对象大小取决于compare()方法的返回值
作者: DreamBoyMrsLin    时间: 2017-8-18 22:56
而楼上说的的第二个,基本不会用,HactSet也用的比较少,但是里面说的hash值,是java对其里面的值经过一定的算法,得出的结果,但是不可否认的是通过这个算法计算出的值,有可能是一样的,那么java对这种算法进行了加强,就是通过equals比对两个值是否相等,通过这两个算法,排除了重复的可能,也确保了值的唯一性
作者: Oliverwqcwrw    时间: 2017-8-20 22:41
Hashcode和equals方法




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