Java 如何将对象从一个贴图放置到另一个贴图?

Java 如何将对象从一个贴图放置到另一个贴图?,java,generics,casting,Java,Generics,Casting,我有一张这样的地图: Map<String,GridCell> cellsMap 你考虑过这个方法吗 e、 g 顺便说一下,我认为这不是一个好的对象模型。我认为最好创建一个包含原始映射(可能是副本)的新类,并为String/String对创建一个附加字段 否则,你会将不同类型的对象扔到同一张地图上,当你以后提取这些信息时,这会使生活变得复杂。每次通过密钥提取时,都必须检查返回的对象的类型。请注意,ConcurrentHashMaps不维护插入顺序。您考虑过该方法吗 e、 g 顺便说

我有一张这样的
地图

Map<String,GridCell> cellsMap
你考虑过这个方法吗

e、 g

顺便说一下,我认为这不是一个好的对象模型。我认为最好创建一个包含原始映射(可能是副本)的新类,并为
String
/
String
对创建一个附加字段

否则,你会将不同类型的对象扔到同一张地图上,当你以后提取这些信息时,这会使生活变得复杂。每次通过密钥提取时,都必须检查返回的对象的类型。请注意,
ConcurrentHashMaps
不维护插入顺序。

您考虑过该方法吗

e、 g

顺便说一下,我认为这不是一个好的对象模型。我认为最好创建一个包含原始映射(可能是副本)的新类,并为
String
/
String
对创建一个附加字段

否则,你会将不同类型的对象扔到同一张地图上,当你以后提取这些信息时,这会使生活变得复杂。每次通过密钥提取时,都必须检查返回的对象的类型。请注意,
ConcurrentHashMaps
不维护插入顺序。

使用clone()方法

使用clone()方法


Map接口有putall()方法,可以添加Map中另一个对象的所有值。

Map接口有putall()方法,可以添加Map中另一个对象的所有值。

如果存在危险,answerMap.putall()为什么允许我们?原始类型的向后兼容性?putAll()不是问题。这是一种从一张地图填充另一张地图的简单方法。我的问题是,您正在使用一个映射来存储不同的不相关类型(GridCell和String),所以当您执行get()时,您不知道您得到了什么为什么answerMap.putAll()允许我们这样做,如果这是一个危险?原始类型的向后兼容性?putAll()不是问题。这是一种从一张地图填充另一张地图的简单方法。我的问题是,您使用映射来存储不同的不相关类型(GridCell和String),因此当您执行get()时,您不知道您得到了什么,因为据我所知,不允许将
map
强制转换为
map
。所以这可能不起作用。据我所知,不允许将
Map
转换为
Map
。所以这可能行不通。
  Map<String,Object> answerMap  = new ConcurrentHashMap<String,Object>();
    //answer should first contain all the map entries of cellsMap and then add an extra entry like the following
    answer.put(getId(), getSelectionValue()); // getSelectionValue() returns a String that contains coordinates of the selected cells.
     return answerMap; 
answerMap.putAll(cellsMap);
HashMap answerMap = (HashMap)cellsMap.clone();