如果key与exact string匹配,则将map替换为map值

时间:2016-06-13 10:49:08

标签: java

Map<String, String> hashtable = new Hashtable<>();
hashtable.put("eBook Cover Image", "724242");
hashtable.put("Cover Image", "95757");
hashtable.put("Image", "9242424");
hashtable.put("Composite", "7697979");
hashtable.put("Low-Res PDF (print)", "1111111111111111");
hashtable.put("Cover", "c11111111");

String s = "eBook Cover Image OR (Low-Res PDF (print) AND Composite)";

for (Map.Entry<String, String> m : hashtable.entrySet()) {
    s = s.replace(m.getKey(), m.getValue());
}

替换没有正确发生。

eBook c11111111 9242424 OR (1111111111111111 AND pppppppppppppppp)

1 个答案:

答案 0 :(得分:5)

迭代条目的顺序未使用Hashtable设置,因此您在访问"Image"之前似乎正在访问"eBook Cover Image"

你可能想要一个LinkedHashMap,你可以先将较长的键放在地图中(就像你的例子中那样),因为它会迭代插入顺序中的条目(默认情况下) )。