第1个回答 2013-05-16
当向集合set中增加对象时,首先计算要增加对象的hashCode码,根据该值来得到一个位置来存放当前的对象,当在该位置没有一个对象存在的话,那么集合set认为该对象在集合中不存在,直接增加进去。如果在该位置有一个对象的话,接着将准备增加到集合中的对象与该位置上的对象进行equals方法比较,如果该equals方法返回false,那么集合认为集合中不存在该对象,再进行一次散列,将该对象放到散列后计算出的新地址里,如果equals方法返回true,那么集合认为集合中已经存在该对象了,不会再将该对象增加到集合中了
第2个回答 2013-05-16
请参看源码
Set中元素的位置由集合的大小(默认初始化为8还是16忘了)和元素的hashCode决定
第3个回答 2013-05-16
因为java 规范,equals 相同,hashcode 必须相同
第4个回答 2013-05-16
集合为啥不能含有相同的元素?
追问集合类型的特点
List集合中允许有重复元素,而Set集合不可以