HashSet类实现了set集合接口,存放于该集合类中的对象不按特定的方式排序,只是简单地把对象加入集合中类似于向口袋里放东西。对集合中存放的对象的访问和操作是通过对象的引用进行的,所以在集合中不能存放重复的对象。set集合中的对象必须重新实现equals()和hashCode()方法。HashSet就是采用哈希算法存取对象的集合,它内部采用对某个数字n进行取余的方式对哈希码进行分组和划分对象的存储区域。Object类中定义了一个hashCode()方法来返回每个Java对象的哈希码,当从HashSet集合中查找某个对象时,java系统首先调用对象的hashCode()方法获得该对象的哈希码。然后根据哈希码找到相应的存储区域,最后取出该存储区域内的每个元素于该对象进行equals()方法比较,这样不用遍历集合中的所有元素就可以得到结论。可见,hashSet集合具有很好的对象检索性能,但是,HashSest集合存储对象的效率相对较低 (非原创,摘之于http://blog.csdn.net/qiufeng6928377/article/details/7293660,讲的很透彻了) |