Hashset不是无序的吗 为什么会自动排序

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,同学代码中使用的是TreeSet,TreeSet是一个有序的集合。HashSet是无序的集合。

如下图:

http://img1.sycdn.imooc.com//climg/5e9fed6009f8c41f05710336.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 源治泷谷 提问者 #1
    见下图 我用Hashset存放intage 遍历的时候依然会由小到大 是什么原因呢 它会自动排序吗
    2020-04-23 01:45:28
  • 好帮手慕阿慧 回复 提问者 源治泷谷 #2
    同学你好,插入HashSet的是Integer类型,其hashCode()实现会返回int值本身,在对象hashCode这一步引入了巧合的"按大小排序",导致数据顺序好像是一致的。祝学习愉快!
    2020-04-23 11:50:33
提问者 源治泷谷 2020-04-22 13:22:36

用hashset存放整数也会自动排序吗?我分别存入1 3 2取出来却变成了 1 2 3http://img1.sycdn.imooc.com//climg/5e9fd43a09f86e2809671150.jpg

好帮手慕小琪 2020-04-21 10:23:47

同学你好,首先HashSet是唯一且无序的(像上面同学说的一样,这里的无序是指与输入顺序无关)。而同学题中写的是TreeSet,如下图:

http://img1.sycdn.imooc.com//climg/5e9e592d0982a67d08380180.jpg

TreeSet是唯一且有序的(这里的有序是按照字母自动由abcd...排序,字符串的话一个一个比较,数字由从小到大的顺序,也并非输入顺序),所以输出时会输出有序结果。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

苍星乱舞 2020-04-21 00:39:46

你在数组里先添加32,再添加1,2,3输出是什么

32,1,2,3

你在TreeSet里先添加32,再添加1,2,3输出是什么

1,2,3,32

请问哪个数据结构是有序,哪个是无序?

无序指的是和添加时的顺序不同。

请采纳!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师