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)
答案 0 :(得分:5)
迭代条目的顺序未使用Hashtable
设置,因此您在访问"Image"
之前似乎正在访问"eBook Cover Image"
。
你可能想要一个LinkedHashMap
,你可以先将较长的键放在地图中(就像你的例子中那样),因为它会迭代插入顺序中的条目(默认情况下) )。