如何按照 int map 的顺序从哈希图中获取键和值



可能的重复项:
有序映射实现

我正在使用哈希图来存储值,如下所示 -

 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.
}

最新更新