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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ArrayList:通过对象的equals方法ArrayList中是直接通过equals方法判断元素是否相同,contains方法和remove方法都会去调用到equals方法,
因为对象类中没有equals方法,而是继承Object类中的equals方法,Object类中的equals方法是对比的是地址值,所以对象的类中要重写Object类中equals方法

HashSet:通过对象的hashCode方法和equals方法
HashSet中先去判断元素的HashCode值相同。就返回false,就不会调用元素的equals方法,如果元素的hashcode值相同,才调用equals方法。

而HashSet的存储是根据哈希表,如果一个对象的哈希值相同就认为是同一元素,如果对象都是new出来的,那么哈希值始终都不会唯一,所以对象的类中要复写hashCode,
而哈希值唯一了不代表实际的内容是唯一的,因此还需要复写equals方法


4 个回复

倒序浏览
并不是通过对象的... 而是底层结构是...
回复 使用道具 举报
ArrayList可以存重复元素的啊....
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
总结的很好啊,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马