黑马程序员技术交流社区

标题: Set里的元素是不是能够重复的,那么用什么方法来区分重... [打印本页]

作者: zc332750    时间: 2014-2-7 12:03
标题: Set里的元素是不是能够重复的,那么用什么方法来区分重...
本帖最后由 zc332750 于 2014-2-7 13:10 编辑

Set里的元素是不是能够重复的,那么用什么方法来区分重复与否呢?使用==还是用equals()?他们有什么区别

作者: kevinmesss.tz    时间: 2014-2-7 12:16
用set里存的元素的类中hashCode() 和 equals()来区分。
如果哈希值不同,那么两个元素不同。
如果哈希值相同,则判断equals()方法是否相同;
equals()为true 两元素相同
equals()为flase 两元素不同

==判读内存地址值是否相同
equals要复写Object的equals方法
作者: 无道    时间: 2014-2-7 12:24
Set集合又分两个常见的HashSet和TreeSet集合。
HashSet集合底层是哈希表。它保证元素唯一性是根据元素本身的hashCode值,当hashCode值一样时,它还会判断调用元素本身的equals方法在进行一次比较。
TreeSet底层是二叉树数据结构。想存入TreeSet集合的元素必须具备比较性或集合本身具备比较性,所以保证其元素唯一性是根据compareTo或compare方法的返回值来决定的。





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