怎么理解Set集合中的HashSet中的元素是无序的?
Set集合中对象是不按特定顺序排序,并且对象没有重复的.而Set的一个实现类:HashSet是按照hash算法来存取集合中的对象的.hash是: 对象值-->哈希码-->元素位置 .所以我有个疑问:"Set集合中对象是不按特定顺序排序" 与 "HashSet的中的对象值和元素位置的对应" 是不是有点矛盾?或者说有点别扭. 这应该是个理解问题,请指正我的叙述并帮忙回答我的疑问?
感激!
怎么理解Set集合中的HashSet中的元素是无序的?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- rednaxelafx 2009-09-18 20:06关注
要理解这个问题应该考虑到Set是个接口。接口的契约很单纯,不会做过多的保证。Set的契约重点就是“元素不重复的集合”,而对顺序不做保证(也就是不做限制,有序无序都可以)。实现该接口的类既可以提供有序的实现,也可以提供无序的实现。
HashSet在保存数据的时候显然还是得按一定顺序放入其背后的数组中,但顺序不是用户可控制的,对用户来说就是“无序”。与之相对,SortedSet接口的契约就包含了“元素不重复,且按照用户指定的方式排序的集合”的意义。SortedSet接口满足Set接口的契约,并额外添加的“有序”的契约。TreeSet就是实现了SortedSet(以及Set)接口的实现,它就是有序的。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥15 delta降尺度计算的一些细节,有偿
- ¥15 Arduino红外遥控代码有问题
- ¥15 数值计算离散正交多项式
- ¥30 数值计算均差系数编程
- ¥15 redis-full-check比较 两个集群的数据出错
- ¥15 Matlab编程问题
- ¥15 训练的多模态特征融合模型准确度很低怎么办
- ¥15 kylin启动报错log4j类冲突
- ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
- ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序