关于使用map存放数据乱序”问题“

Posted myunyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于使用map存放数据乱序”问题“相关的知识,希望对你有一定的参考价值。

今天做项目中遇到了一个比较低级的错误,如果没注意将会变的更麻烦。。。

其实吧,也不难,要求就是将list中的值转为map后,再顺序输出map中的值,list的顺序怎样,加入到map的顺序也应怎样,不能乱序!

一开始做之前没注意那么多,习惯性使用

1 Map<String,Object> jsonMap = new HashMap<>();

这样做之后的结果可想而知,虽然说查询数据快,但数据肯定是乱序的,毕竟它是根据hashcode码来排序,

之后使用TreeMap,但依然没有得到想要的结果,而HashTable就更不用说了。

可能是因为当时事多比较急吧,没考虑那么多,最后查看了下api之后,才发现可以使用LinkedHashMap才能达到自己想要的效果;

最后来讲下HashMap、TreeMap、LinkedHashMap和HashTable四者的区别吧:

1、HashMap中的key的值根据hashcode来排序,无法得到实际中想要的顺序,常用来做统计;

2、LinkedHashMap,它内部有一个链表,可以保持key插入的顺序。迭代的时候,也是按照插入的顺序进行迭代,而且迭代的速度比HashMap更快;

3、TreeMap的顺序是key的自然顺序(如整数从小到大),也可以指定比较函数,但不能保持插入时的顺序

4、HashTable与HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步、即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。

以上是关于关于使用map存放数据乱序”问题“的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中MAP值保持顺序不变

关于vim编码器粘贴代码会出现乱序问题

关于向HashMap存放数据出现顺序混乱的问题

关于数组乱序的深挖——“感觉一直在写毒代码”

更安静的purrr :: map2用于名称乱序的列表

Echarts关于饼图data中数据如何动态填充?