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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王章亚 中级黑马   /  2012-7-3 13:51  /  1413 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ArrayList与HashSet比较
HashCode:由此对象的内存地址换算而来。
哈希算法:将集合分为若干个储存区域,每个对象可以算出一个哈希码,将哈希码分组,每组分别对应某个储存区域, 根据一个对象的哈希码就能确定该对象储存在哪个区域。
HashSet:采用哈希算法的集合。实现了Collection接口,只能存入不同HashCode对象,即只存入不同的对象,如果希望 存入具有相同内容的两个对象,则需覆盖对象的HashCode和 equals方法。
提示:当一个对象被存入HasthSet中后,就不能再修改这个对象中那些参与计算哈希值的字段了,否则,修改后的哈希 值与最初存入HashSet的就不相符了,此时HashSet将无法检索到此对象,这也会导致无法从HashSet集合中单独删除当 前对象,从而造成内存泄漏(..无用后仍在内存中占用空间,从而造成内存的浪费)。

1 个回复

正序浏览
简单的说:
ArrayList相当于一个可变长度的数组,里面确实封装了数组,存放的数据是有序的,可重复的。
HashSet采用哈希算法存储对象,里面存放的数据是无序的,是不可重复的,存入的对象需要复写hashCode()方法和equals()方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马