以下是来自2个linkedHashMaps的数据:
valueMap: { y=9.0, c=2.0, m=3.0, x=2.0}
formulaMap: { y=null, ==null, m=null, *=null, x=null, +=null, c=null, -=null, (=null, )=null, /=null}
我要做的是将第一张地图中的值输入到第二张地图中的相应位置。两个映射都将String,Double作为参数。
到目前为止,这是我的尝试:
for(Map.Entry<String,Double> entryNumber: valueMap.entrySet()){
double doubleOfValueMap = entryNumber.getValue();
for(String StringFromValueMap: strArray){
for(Map.Entry<String,Double> entryFormula: formulaMap.entrySet()){
String StringFromFormulaMap = entryFormula.toString();
if(StringFromFormulaMap.contains(StringFromValueMap)){
entryFormula.setValue(doubleOfValueMap);
}
}
}
}
这样做的问题是它将所有值y,m,x,c设置为最后一个double的值。遍历这些值也不起作用,因为这些值通常在FormulaMap中的排列顺序不同。理想情况下,我需要说的是,如果FormulaMap中的字符串与valueMap中的字符串相同,则将FormulaMap中的值设置为与valueMap中相同的值。
如果您对我能做什么有任何想法,请告诉我。
最佳答案
这很简单:
formulaMap.putAll(valueMap);
如果您的值映射包含
formulaMap
中不包含的键,并且您不想更改原始键,请执行以下操作:final Map<String, Double> map = new LinkedHashMap<String, Double>(valueMap);
map.keySet().retainAll(formulaMap.keySet());
formulaMap.putAll(map);
由于评论而进行编辑看来问题根本不是我所想的,所以去了:
// The result map
for (final String key: formulaMap.keySet()) {
map.put(formulaMap.get(key), valueMap.get(key));
// Either return the new map, or do:
valueMap.clear();
valueMap.putAll(map);