我的接口返回的数据顺序总是不固定
问题描述
====
问题定位
====
Mybatis
框架实现数据的获取的。突然接到一个需求是要求将数据列按照一定顺序返回。前端直接按照我返回的顺序进行渲染。a
、d
、b
、c
、e
但是显示出来的顺序缺失a
、b
、c
、d
、e
。HashMap
是不会按照写入顺序排序的。HashMap
的key的排序是按照key的hash值进行排序的HashMap
的源码了解了其内部的元素存储原理才明白这个道理。此时才知其所以然。问题分析
====
HashMap
中添加如下元素 。问题解决
====
LinkedHashMap
, 当时不知道是个啥玩意但是看名字感觉像是HashMap
的升级版而且是链式的。感觉有点排序的感觉LinkedHashMap
可以实现按照写入顺序排序。HashMap
的子类。所以他的存储结构和HashMap基本上是一样的。因为这里是Bug解析所以关于LinkedHashMap
源码的东西我就不深入研究了。最终我追踪到了是其内部linkNodeLast
这个方法使其具有写入顺序的特性。HashMap
put进数据之后会将当前添加进来的数据和上次添加的node进行链表关联。这样就使其都在一条链上总结
==
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。