为什么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即可,当然会造成一些额外开销,但并不影响什么。

0 0
原创粉丝点击