如何将对象从一个地图放到另一个地图?

时间:2012-08-09 08:39:37

标签: java generics casting

我有Map这样:

Map<String,GridCell> cellsMap

我将此传递给方法,并且该方法的返回应包含Map(例如answerMap),其中包含cellsMap地图的所有条目以及额外条目,其中包含String作为键,String作为值。类似的东西:

  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; 

3 个答案:

答案 0 :(得分:3)

您是否考虑过Map.putAll()方法?

e.g。

answerMap.putAll(cellsMap);

顺便说一句,我认为这不是一个好的对象模型。我认为您最好创建一个包含原始地图(可能是副本)的新课程以及String / String对的其他字段。

否则你将不同类型的对象扔到同一个地图中,这会在以后提取该信息时使生活变得复杂。每次通过密钥提取时,您都必须检查返回对象的类型。请注意,ConcurrentHashMaps不会维护广告订单。

答案 1 :(得分:0)

使用clone()方法。

HashMap answerMap = (HashMap)cellsMap.clone();

答案 2 :(得分:0)

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