这就是我想要做的。

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


使用上述调用,我得到类型为mapObjMap<String, List<Address>>

我想在另一个方法(我无法更改)中以mapObj的形式发送LinkedHashMap<String, List<LinkedHashMap>>作为参数,它进行一些进一步处理。

有什么办法可以解决此问题而又不影响mapObj中的数据?

最佳答案

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


将所有Address对象转换为LinkedHashMap对象。
将所有Map条目放入LinkedHashMap对象。


对于第一个,您可以在其中可以进行转换的位置编写实用程序方法。例如,

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>>数据类型中包含正确的表示形式。

希望这可以帮助!

关于java - 如何将一些自定义Map对象转换为LinkedHashMap?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41098251/

10-14 05:46