为什么HashMap取出的数据顺序和存储时的顺序不一致,如何解决?
来源:互联网 发布:基德 知乎 编辑:程序博客网 时间:2024/06/05 07:36
项目没有联调,所以根据接口自造了一组数据用到了HashMap的存储:
// //////////////测试数据///////////////
if (tabTitle != null && tabTitle.size() > 0) {
tabTitle.clear();
}
for(int i = 0; i < 5; i++) {
List<SeatTime> list = new ArrayList<SeatTime>();
for (int k = 0; k < 30; k++) {
SeatTime st = new SeatTime();
st.setTime("10:00_" + k);
st.setDatetime("2014-11-18_" + k);
st.setDatedesc("11月18日 明天 10:30_" + k);
if (k % 3 == 0) {
st.setState("1");
} else {
st.setState("0");
}
list.add(st);
}
Config.Log("zrck", "i========"+i);
timeMap.put("日期" + i, list);
}
//获取map里的key值
Iterator it = timeMap.entrySet().iterator();
while (it.hasNext()) {
Entry entry = (Entry) it.next();
tabTitle.add(entry.getKey().toString().replaceAll(" ",""));
Config.Log("zrck", "============"+entry.getKey().toString());
}
测试后的结果 输入时按顺序插入的,但是取出时数据就乱套了,查了下资料发现,hashmap是散列映射,也就是它不会记录数据存储时的顺序,也就无法保证你取出时的顺序,为了解决这个问题,很简单采用LinkedHashMap或者是TreeMap即可,当然会造成一些额外开销,但并不影响什么。
- 为什么HashMap取出的数据顺序和存储时的顺序不一致,如何解决?
- --Set * 无序(存储顺序和取出顺序不一致),唯一
- 按顺序取出HashMap的put 值
- 数据存储的字节顺序
- 一般情况下的数据存储顺序
- CUDAArray的数据存储顺序
- HashMap如何存储数据的?
- 顺序存储与链式存储的集合-HashMap、HashTable
- mysql取出两者不一致的数据
- HashMap和LinkedHashMap的存取顺序问题
- SharedPreferences 存储按顺序取出
- 加载页面时同时触发两个ajax请求,数据显示的顺序不一致
- 栈的顺序存储和链式存储
- 顺序存储和链式存储的比较
- 栈的顺序存储和链式存储
- 队列的顺序存储和链式存储
- struts2的搜索顺序:与理论不一致
- HBase回放Hlog顺序不一致的问题
- 使用Visual C++进行串口通信编程
- STM32的存储器映射详解
- Princeton Algorithms: Part 2 [week 3: Maxflow and Mincut]
- Jquery Mobile文字和UI 组件如何同时居中(前端UI)?
- DataGrid使用总结
- 为什么HashMap取出的数据顺序和存储时的顺序不一致,如何解决?
- leetcode做题总结,题目Count and Say 2012/03/05
- 为什么写作《Qt Quick核心编程》
- [poj1833 排列]求数列的全排列中的后k项
- 10大热门的物联网初创公司
- Nor Flash 学习笔记
- <一>Ioc控制反转——手把手教学:如何配置并使用单元测试一个spring框架(附源码)
- c语言声明的特征
- 基于数组和基于链表线性表C++实现