我的字符串看起来像;
String values = "I am from UK, and you are from FR";
和我的哈希表;
Hashtable countries = new Hashtable();
countries.put("United Kingdom", new String("UK"));
countries.put("France", new String("FR"));
使用哈希表中的值相应地更改字符串中的值的最有效方法是什么。这些只是要改变的2个值,但在我的情况下,我将有100 +
答案 0 :(得分:5)
我不确定你能做多少事情以一种值得的方式来优化它。实际上你可以为这样的自定义替换构建一个FSM,但它可能比你想要的更多。
Map<String, String> countries = new HashMap<String, String>();
countries.put("United Kingdom", "UK");
countries.put("France", "FR");
for (Map.Entry<String, String> entry : countries.entrySet()) {
values.replace(entry.getKey(), entry.getValue());
}
几点说明:
请勿使用Hashtable
。改为使用Map
(界面)和HashMap
(类);
在适用的情况下,将变量,参数和返回类型声明为接口而非具体类;
假设您使用的是Java 5,请使用泛型类型参数来获得更易读的代码。在这种情况下,Map<String, String>
等;以及
请勿使用new String("UK")
。没有必要。
答案 1 :(得分:2)
几点想法。首先:为什么要使用哈希表?哈希表通常更快,因为哈希表是同步的。
然后:为什么不使用泛型?
HashMap<String, String>
比HashMap
第三:不要使用new String("UK")
,"UK"
会很好,你要创建两次相同的字符串。
但是要解决您的问题,您可能想要转动地图:
Map<String,String> countries = new HashMap<String, String>();
countries.put("UK", "United Kingdom");
countries.put("FR", "France");
现在,如果我理解你,你想做这样的事情:
String values = "I am from UK, and you are from FR";
for(Map.Entry<String, String> entry : countries.entrySet()){
values = values.replace(entry.getKey(), entry.getValue());
}