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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 顾玲玉 中级黑马   /  2013-5-27 17:59  /  1444 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 顾玲玉 于 2013-5-27 19:42 编辑

HashSet集合里的元素是无序的,他通过HashCode值来决定元素的存储位置,HashCode值就相当于HashSet集合的“索引”,可是为什么不直接使用数组,还需要使用HashSet集合来存储元素?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
数组是顺序的所以它是读的时候快,但是改的时候慢啊。而hashset将元素分散在表的各个位置上,所以访问它的顺序几乎是随机的,当我们不关心集合中元素的顺序时就可以使用hashset,再说了,数组的长度不能变啊。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
数组长度是固定的,集合长度是可变的。一个是固定容器,一个是可变容器。
回复 使用道具 举报
首先我们讲数组,它的存储规则是 必须是同种类型的元素(比如: int arr[] = {2,3,4,5}; // 这个只能存储int类型),长度不可变. 对吧? 那么HashSet 集合呢?  首先:长度是可以改变的,存储的类型可以是多种,对吧,一比较,优点就体现出来了. 能明白么?
黑马云青年回复

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
补充点:     可以根据你需求的不同来选择对应使用的集合. 如: LinkedHashSet 元素装入顺序与取出顺序一致
回复 使用道具 举报
shiweiCao 发表于 2013-5-27 18:25
首先我们讲数组,它的存储规则是 必须是同种类型的元素(比如: int arr[] = {2,3,4,5}; // 这个只能存储int类 ...

嗯嗯,明白了。谢谢哦!
回复 使用道具 举报
顾玲玉 发表于 2013-5-27 19:38
嗯嗯,明白了。谢谢哦!

别客气.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马