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

© darkads 中级黑马   /  2014-9-18 23:52  /  833 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet集合是不能允许同一个对象多次放入,那么HashSet如何判断这个元素是否存在呢?
如果一个一个进行比较,元素个数少还好,但是一万个,也要一个一个比较吗?这样效率太低了,所以哈希算法由此而生。
哈希算法:内存被分成了一个一个大致相当的区域,每一个区域有一个编号,当进行存放对象时,给每一个对象一个哈希码,通过对哈希码进行技术,例如对哈希码取余,获得的值就是内存区域的编号,而对象就放入这个空间中,那么当需要比较时,先从对象获得哈希码,然后计算出对象应该存放的内存区域,取出这个区域内的对象调用equals()方法进行比较,这样效率就极大的提高了,进行比较的操作就只会发生在一片区域内。但是这就需要保证不同对象的哈希值不一样,所以Object类中有一个获得哈希值的方法:hashCode()。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马