为了账号安全,请及时绑定邮箱和手机立即绑定

为什么辛辛苦苦给hashmap进行了排序,存放到新的hashmap中的时候依旧无视我的排序

为什么辛辛苦苦给hashmap进行了排序,存放到新的hashmap中的时候依旧无视我的排序

翻翻过去那场雪 2018-07-15 10:08:13
项目需求是给一个map里的值按value排序,为什么我辛辛苦苦的排序在最后却无视了我的排序,控制台效果如下:{我们都是医科所=1, 工程技术中心标准组=2, 清华大学=5, 平台管理中心办公室=2}--------------排序前--------------我们都是医科所=1工程技术中心标准组=2清华大学=5平台管理中心办公室=2--------------排序后--------------清华大学=5{清华大学=5}工程技术中心标准组=2{工程技术中心标准组=2, 清华大学=5}平台管理中心办公室=2{工程技术中心标准组=2, 清华大学=5, 平台管理中心办公室=2}我们都是医科所=1{我们都是医科所=1, 工程技术中心标准组=2, 清华大学=5, 平台管理中心办公室=2}{我们都是医科所=1, 工程技术中心标准组=2, 清华大学=5, 平台管理中心办公室=2}最后应该是5 2 2 1但最终又回到了之前未排序的效果附加代码如下:
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

LinkedHashMap 有序,直接使用这个不就行了


查看完整回答
反对 回复 2018-07-15
?
MYYA

TA贡献1868条经验 获得超4个赞

hashmap本来就是有它自己的组织顺序,并非按照你的添加顺序来的,你如果要一个有序的map,自己实现Map接口做一个吧。

查看完整回答
反对 回复 2018-07-15
?
不负相思意

TA贡献1777条经验 获得超10个赞

hashmap有自己的排序,你把元素sort了再保存,貌似大概也没用的,hashmap排序完了就不是hashmap了! 用list存吧。

查看完整回答
反对 回复 2018-07-15
?
POPMUISE

TA贡献1765条经验 获得超5个赞

看了上面的答案,发现都只是笼统地回答,HashMap好像是根据key的hashCode来进行分桶的,如果没记错的话HashMap是数组链表的形式存放的,你每次put进去的时候,就先分好你在哪个位置,如果对应的位置有元素了,就在那个元素链表下面加元素。所以你put进去的时候是程序控制位置,你人为控制不了。

查看完整回答
反对 回复 2018-07-15
  • 3 回答
  • 0 关注
  • 1088 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信