【发布时间】:2014-03-13 11:50:30
【问题描述】:
我有存储在HashMap<Long, String> 中的输入数据(时间戳、Json 字符串)。为了处理 JSON 字符串,我使用了一个迭代器。
我使用Iterator<Entry<Long, String>> it = data.entrySet().iterator(); 来获取entrySet 作为迭代器。
我现在的问题是 HashMap 的组织方式如下:
123,{String1}
124,{String2}
125,{String3}
更好的表达方式:我在HashMap中添加A,在HashMap中添加Z,在HashMap中添加E,在HashMap中添加I。我希望 A、Z、E 和 I 的顺序在迭代器中具有相同的顺序。
如果我把它放在一个迭代器中,我会得到:
124, {String2}
123, {String1}
125, {String3}
迭代器的顺序与HashMap的顺序不同。对我来说,迭代器的顺序必须与 HashMap 的顺序完全相同。我做错了什么,迭代器正在改变数据的顺序?
【问题讨论】:
-
(如果你想要的是插入顺序,而不是自然排序顺序,那就是
LinkedHashMap。) -
哈希映射没有排序...您的哈希映射没有像任何东西一样“组织”!如果要对数据集进行排序,请使用 TreeMap
-
也许我表达错了。这不是关于排序,而是关于顺序。我把A放到HashMap,B放到HashMap,Z放到HashMap,D放到HashMap。使用调试器,我看到了 A、B、Z、D 的顺序,我希望迭代器中的顺序相同。
标签: java json iterator hashmap