黑马程序员技术交流社区

标题: ArrayList和HashSet保证数据唯一性的方式 [打印本页]

作者: 风语    时间: 2015-10-4 12:31
标题: ArrayList和HashSet保证数据唯一性的方式
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方法



作者: 狮子王    时间: 2015-10-4 19:57
并不是通过对象的... 而是底层结构是...
作者: yongyinqi    时间: 2015-10-4 21:40
ArrayList可以存重复元素的啊....
作者: 往事如风555    时间: 2015-10-9 22:54
谢谢分享
作者: 删''情    时间: 2015-10-9 23:27
总结的很好啊,,




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