可能的重复项:
有序映射实现
我正在使用哈希图来存储值,如下所示 -
Map<String,String> propertyMap=new HashMap<String,String>();
propertyMap.put("Document Type", dataobject.get("dDocType"));
propertyMap.put("Document Title", dataobject.get("dDocTitle"));
propertyMap.put("Revision Label", dataobject.get("dRevLabel"));
propertyMap.put("Security Group", dataobject.get("dSecurityGroup"));
之后,我在列表中获取哈希图键和值
documentProperties = new ArrayList(propertyMap.entrySet());
但是当我迭代列表时,我没有按照我将其放入地图的顺序获取键和值。
无论如何,我可以通过它获得我将其放入地图中的顺序中的值。谢谢
您正在寻找的是LinkedHashMap
.
为什么此链表定义了迭代顺序,通常是键插入映射的顺序(插入顺序)。
,为什么需要单独的ArrayList
?您可以直接迭代Map.entrySet
:
for (final Map.Entry<String, String> entry : propertyMap.entrySet()) {
...
}
propertyMap.entrySet()
你会得到Set
的结果。 Set
是无序的。
new ArrayList(propertyMap.entrySet());
使用您在 Set 中的顺序(这可能不是您放入地图的顺序)构造一个列表。
如果您正在寻找订单映射,您可以使用LinkedHashMap
这是关于这个话题的有趣讨论。
使用LinkedHashMap。有关更多详细信息,请查看迈克尔给出的此问题和答案
试试这个。
for(Map.Entry<String, String> m : map.entrySet()){
// Use m.getKey() to get the Key.
// Use m.getValue() to get the Value.
}