关于使用map存放数据乱序”问题“
今天做项目中遇到了一个比较低级的错误,如果没注意将会变的更麻烦。。。
其实吧,也不难,要求就是将list中的值转为map后,再顺序输出map中的值,list的顺序怎样,加入到map的顺序也应怎样,不能乱序!
一开始做之前没注意那么多,习惯性使用
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存放数据乱序”问题“的更多相关文章
- qml Loader异步导致ComBoBox数据乱序
qml Loader异步导致ComBoBox数据乱序 当使用Loader动态加载qml文件时, 如果将Loader设置为异步,那么动态加载的组件内的ComBoBox数据将呈现乱序状态, 代码请见下文 ...
- TCP协议下大数据传输IOCP乱序问题
毕业后稀里糊涂的闭门造车了两年,自己的独立博客也写了两年,各种乱七八糟,最近准备把自己博客废了,现在来看了下这两年写的对我来说略微有点意义的文章只此一篇,转载过来以作留念. 写的很肤浅且凌乱,请见谅. ...
- Grafana Mimir:支持乱序的指标采集
Grafana Mimir:支持乱序的指标采集 译自:New in Grafana Mimir: Introducing out-of-order sample ingestion 很早之前在使用th ...
- Flink使用二次聚合实现TopN计算-乱序数据
一.背景说明: 在上篇文章实现了TopN计算,但是碰到迟到数据则会无法在当前窗口计算,需要对其中的键控状态优化 Flink使用二次聚合实现TopN计算 本次需求是对数据进行统计,要求每隔5秒,输出最近 ...
- 使用std::map和std::list存放数据,消耗内存比实际数据大得多
使用std::map和std::list存放数据,消耗内存比实际数据大得多 场景:项目中需要存储一个结构,如下程序段中TEST_DATA_STRU,结构占24B.但是使用代码中的std::list&l ...
- [转载]排序:长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap
长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap 请设计并实现排序. google笔试小题.题目来源:http://wenku.baidu.com/view/5aa818dda5 ...
- Apache Flink 如何正确处理实时计算场景中的乱序数据
一.流式计算的未来 在谷歌发表了 GFS.BigTable.Google MapReduce 三篇论文后,大数据技术真正有了第一次飞跃,Hadoop 生态系统逐渐发展起来. Hadoop 在处理大批量 ...
- 疯狂位图之——位图生成12GB无重复随机乱序大整数集
上一篇讲述了用位图实现无重复数据的排序,排序算法一下就写好了,想弄个大点数据测试一下,因为小数据在内存中快排已经很快. 一.生成的数据集要求 1.数据为0--2147483647(2^31-1)范围内 ...
- Lintcode--003(乱序字符串)
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包含小写字母 样例 ...
随机推荐
- linux系统权限(基本权限)
linux的系统权限:r-- 100 4-w- 010 2--x 001 1 [root@localhost ~]# ll -d dir drwxrwxrwx root root Nov : di ...
- LeetCode Day 8
LeetCode0015 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 例如, 给 ...
- Mac下通过FFMpeg实现Android手机推流和播放
一.Mac下搭建推流服务器(Nginx+RTMP+FFMpeg) 安装x264 git clone git://git.videolan.org/x264.git cd x264 ./configur ...
- iText 中文无法显示
/** * 导出PDF工具com.lowagie.itext测试 * * @param response * @throws IOException * @throws DocumentExcepti ...
- 押宝在Apple Watch的智能手表游戏玩得转吗?
Watch的智能手表游戏玩得转吗?" title="押宝在Apple Watch的智能手表游戏玩得转吗?"> 如果你给法拉利跑车贴上金箔,会被认为是俗气.但若在Ap ...
- CSAPC08台湾邀请赛_T1_skyline
题目链接:CSAPC08台湾邀请赛_T1_skyline 题目描述 一座山的山稜线由许多片段的45度斜坡构成,每一个片段不是上坡就是下坡. / / * / / * / // / // / 在我 ...
- SWUST OJ Gold Nuggets Distribution(0490)
Gold Nuggets Distribution(0490) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 421 Accepte ...
- javascript学习内容
http协议 犀牛书 MDN js单线程 let只在代码块内有效 es5只有全局作用域 const变量指向的内存地址不得改动,值不能保证不变 全局变量不加var node.js 更改连接到服务器的方式 ...
- 来自ebay内部的「软件测试」学习资料,覆盖GUI、API自动化、代码级测试及性能测试等,Python等,拿走不谢!...
在软件测试领域从业蛮久了,常有人会问我: 刚入测试一年,很迷茫,觉得没啥好做的-- 测试在公司真的不受重视,我是不是去转型做开发会更好? 资深的测试架构师的发展路径是怎么样的?我平时该怎么学习? 我 ...
- [PyTorch入门]之从示例中学习PyTorch
Learning PyTorch with examples 来自这里. 本教程通过自包含的示例来介绍PyTorch的基本概念. PyTorch的核心是两个主要功能: 可在GPU上运行的,类似于num ...