如何将一些自定义Map对象转换为LinkedHashMap?

时间:2016-12-12 10:01:26

标签: java

这是我正在尝试做的事情。

Map<String, List<Address>> mapObj = someService.getSomeAddress();

使用以上通话我的mapObj类型为Map<String, List<Address>>

我想将mapObj作为参数发送到另一个方法(我无法更改)作为LinkedHashMap<String, List<LinkedHashMap>>进行进一步处理。

有没有办法解决这个问题,而不会影响mapObj内的数据?

1 个答案:

答案 0 :(得分:2)

您需要执行几个转换步骤。

  1. 将所有Address个对象转换为LinkedHashMap个对象。
  2. 将所有Map条目放入LinkedHashMap对象。
  3. 对于第一个,您可以在可以进行此转换的地方编写实用程序方法。例如,

    public static List<LinkedHashMap> addresstoMap(List<Address> addresses)
    {
        List<LinkedHashMap> list = new ArrayList<>();
        for(Address a: addresses){
            LinkedHashMap map = new LinkedHashMap();
            // Add address fields to map here
            list.add(map);
        }
        return list;
    }
    

    然后,对于第二步,您可以这样做:

    LinkedHashMap<String, List<LinkedHashMap>> map = new LinkedHashMap<?,?>();
    

    遍历mapObj的条目集并将它们放入上面的map对象中。

    for (Map.Entry<String, List<Address>> e : m.entrySet()) {
        map.put(e.getKey(), addresstoMap(e.getValue()));
    }
    

    上面的最终map对象将包含LinkedHashMap<String, List<LinkedHashMap>>数据类型中的正确表示。

    希望这有帮助!