HashSet底层数据结构是哈希表,哈希表按哈希值来存储,HashSet集合中有若干个存储区域,而每个对象可以计算出一个hash值,系统会自动将这个值分组,对应若干个存储区域。当添加新元素时,系统会计算出这个元素的hash值,然后跟存储区域的每一个元素进行比较,如果不相同则添加该新元素。如果相同再equals比较,若为false,则添加该元素。
简单说就是同过元素的两个方法,hashcode()和equals()来完成,如果元素的hashCode值相同,再判断equals是否为true,若为true就存不进去,如果元素的hashCode值不同,不会调用equals,直接存进去
本文出自 “Tracy的博客” 博客,谢绝转载!
解说HashSet如何保证元素的唯一性,布布扣,bubuko.com
原文地址:http://tracy123.blog.51cto.com/4345785/1411293