A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

用什么方法来区分的,有什么区别?

8 个回复

倒序浏览
哈希表不一样啊,还有equals()方法比较
回复 使用道具 举报
在对象中重写hashCode和equals方法,,也可以自定义比较方法
回复 使用道具 举报
哈希表类的存入的元素类需要重写hashcode和equals方法  二叉树类实现comparable和comparator接口 建立比较方式
回复 使用道具 举报
1:哈希set 是通过先比较存入对象的哈希值,如果哈希值一样的话再比较equals方法!如果还一样就不会存入!2:而TreeSet是通过你实现comparable接口后,重写其中的compareTo方法进行比较或者是在穿件TreeSet对象时传入一个Comparator对象,通过Comparator的compareTo方法进行比较是否重复
回复 使用道具 举报
是用equals方法和hashcode方法结合使用来区分
回复 使用道具 举报
HashSet和TreeSet不一样的实现方法,楼上有人说了。
回复 使用道具 举报
dftgg 中级黑马 2014-8-13 10:01:14
8#
hashCode和equals方法
回复 使用道具 举报
    HashSet是通过元素的hashCode和equals来实现的,比如,在使用contains或add方法时,都要首先调用hashCode方法获取你要判断或加入的元素的哈希值,与容器里的元素进行比较,如果哈希值不相同,则与下一个比较,如果相同,则调用equals方法再进行比较,如果比较结果相同,contains会得到一个返回值true,add也会得到一个布尔型的值false并且结束此次调用,如果比较结果不同,会继续与下一个元素进行比较;当比较到最后,都没有相同的元素时,contains方法会得到一个返回值false并结束调用,而add会得到一个返回值true和会修改该Set集合(即把这个元素添加到集合中)并结束此次调用。
    remove方法也是按这种方式比较的,但不管是哪种方法按这种方式去比较,对于hashCode和equals的调用都是由Java底层去实现的,而我们只需要重写hashCode和equals方法就行,特别是对于集合元素是自定义对象时,则必须要按对象内容重写这两个方法,否则就比较不出来了(因为每新建一个对象,都会有新的地址分配给对象)。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马