Java 如何将一些自定义映射对象转换为LinkedHashMap?

Java 如何将一些自定义映射对象转换为LinkedHashMap?,java,Java,这就是我要做的 Map<String, List<Address>> mapObj = someService.getSomeAddress(); Map mapObj=someService.getSomeAddress(); 使用上面的调用,我得到类型为Map 我想将mapObj作为另一个方法(我无法更改)中的参数发送为LinkedHashMap,该方法进行进一步处理 是否有任何方法可以在不影响mapObj中的数据的情况下解决此问题?您需要执行两个转换步骤 将所有

这就是我要做的

Map<String, List<Address>> mapObj = someService.getSomeAddress();
Map mapObj=someService.getSomeAddress();
使用上面的调用,我得到类型为
Map

我想将
mapObj
作为另一个方法(我无法更改)中的参数发送为
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;
    }
    
    上面最后一个
    map
    对象将在
    LinkedHashMap
    数据类型中包含正确的表示


    希望这有帮助

    您需要执行几个转换步骤

  • 将所有
    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;
    }
    
    上面最后一个
    map
    对象将在
    LinkedHashMap
    数据类型中包含正确的表示


    希望这有帮助

    嗯,是的。无论如何,您都需要创建一个副本。然而,地址如何变成列表还不清楚。而订单应该是什么也不清楚。这个方法关心地图的具体类型这一事实也是一种味道。是的。无论如何,您都需要创建一个副本。然而,地址如何变成列表还不清楚。而订单应该是什么也不清楚。而且,该方法关心地图的具体类型这一事实也是一种味道。
    for (Map.Entry<String, List<Address>> e : m.entrySet()) {
        map.put(e.getKey(), addresstoMap(e.getValue()));
    }