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