黑马程序员技术交流社区

标题: 关于HashSet的疑惑 [打印本页]

作者: 顾玲玉    时间: 2013-5-27 17:59
标题: 关于HashSet的疑惑
本帖最后由 顾玲玉 于 2013-5-27 19:42 编辑

HashSet集合里的元素是无序的,他通过HashCode值来决定元素的存储位置,HashCode值就相当于HashSet集合的“索引”,可是为什么不直接使用数组,还需要使用HashSet集合来存储元素?
作者: SOAR    时间: 2013-5-27 18:21
数组是顺序的所以它是读的时候快,但是改的时候慢啊。而hashset将元素分散在表的各个位置上,所以访问它的顺序几乎是随机的,当我们不关心集合中元素的顺序时就可以使用hashset,再说了,数组的长度不能变啊。
作者: 王靖远    时间: 2013-5-27 18:24
数组长度是固定的,集合长度是可变的。一个是固定容器,一个是可变容器。
作者: shiweiCao    时间: 2013-5-27 18:25
首先我们讲数组,它的存储规则是 必须是同种类型的元素(比如: int arr[] = {2,3,4,5}; // 这个只能存储int类型),长度不可变. 对吧? 那么HashSet 集合呢?  首先:长度是可以改变的,存储的类型可以是多种,对吧,一比较,优点就体现出来了. 能明白么?
黑马云青年回复
作者: shiweiCao    时间: 2013-5-27 18:31
补充点:     可以根据你需求的不同来选择对应使用的集合. 如: LinkedHashSet 元素装入顺序与取出顺序一致

作者: 顾玲玉    时间: 2013-5-27 19:38
shiweiCao 发表于 2013-5-27 18:25
首先我们讲数组,它的存储规则是 必须是同种类型的元素(比如: int arr[] = {2,3,4,5}; // 这个只能存储int类 ...

嗯嗯,明白了。谢谢哦!
作者: shiweiCao    时间: 2013-6-2 23:23
顾玲玉 发表于 2013-5-27 19:38
嗯嗯,明白了。谢谢哦!

别客气.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2