为什么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即可,当然会造成一些额外开销,但并不影响什么。
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即可,当然会造成一些额外开销,但并不影响什么。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询