1.需求
1.1.安装制定的规则替换掉字符串
1.2.需要替换的规则是可选的
1.3.可选的规则保存在数据库中,需要一步步的构建缓存,即使用过的规则就缓存下来。
2 代码
package testJava2;
import java.util.HashMap;
import java.util.Map;
public class CacheTest {
public static void main(String[] args) {
System.out.println("逐步缓存测试");
CacheTest cachtest = new CacheTest();
cachtest.main();
//cachtest.replaceTest();
}
public void main() {
String valueStr = "dddddd{1}dddd{2}";
String temValueId = "2";
String valueStr2 = "ssss{1}ssss{2}sss";
System.out.println("变更前:"+valueStr);
System.out.println("使用的map:"+getMapCache().getMap(temValueId).toString());
System.out.println("替换后:"+replaceMapvalue(valueStr,temValueId));
System.out.println("使用的map:"+getMapCache().getMap(temValueId).toString());
System.out.println("变更前:"+valueStr2);
System.out.println("替换后:"+replaceMapvalue(valueStr2,temValueId));
}
void replaceTest() {
String valueStr = "dd{1}dddd{1}dddd{1}";
valueStr = valueStr.replace("1", "2");
System.out.println(valueStr);
}
public String replaceMapvalue(String valueStr,String valuemapid) {
Map<String,Object> map = getMapCache().getMap(valuemapid);
for (Map.Entry<String,Object> entry:map.entrySet()) {
valueStr = valueStr.replace(entry.getKey().toString(), entry.getValue().toString());
}
return valueStr;
}
MapCache mapCache = null;
MapCache getMapCache() {
if(mapCache==null) {
mapCache = new MapCache();
}
return mapCache;
}
class MapCache{
String[] arr = {"a","b","c","d","e","f"};
MapCache(){
for(int i=0;i<5;i++) {
Map<String,Object> map = new HashMap<String,Object>();
for(int j=0;j<3;j++) {
map.put(String.valueOf(j), arr[i]+"_value_"+arr[j]);
}
data.put(String.valueOf(i), map);
}
}
Map<String,Object> cache = new HashMap<String,Object>();
Map<String,Object> data = new HashMap<String,Object>();
Map<String,Object> getMap(String key) {
if(null ==cache.get(key)) {
getMapByDatabase(key);
}
return (Map<String,Object>)cache.get(key);
}
void getMapByDatabase(String key){
Map<String,Object> map = (Map<String,Object>)data.get(key);
//考虑线程
cache.put(key, map);
}
}
}
3. 运行结果
逐步缓存测试
变更前:dddddd{1}dddd{2}
使用的map:{0=c_value_a, 1=c_value_b, 2=c_value_c}
替换后:dddddd{c_value_b}dddd{c_value_c}
使用的map:{0=c_value_a, 1=c_value_b, 2=c_value_c}
变更前:ssss{1}ssss{2}sss
替换后:ssss{c_value_b}ssss{c_value_c}sss
本文介绍了一种基于缓存的字符串替换机制,通过从数据库获取替换规则并缓存以提高效率。示例代码展示了如何实现这一过程,包括初始化缓存、进行字符串替换以及更新缓存。
1689

被折叠的 条评论
为什么被折叠?



