java渲染_Java实现的一个简单的模板渲染

packagecom.hdwang;importjava.util.HashMap;importjava.util.Map;/*** Created by hdwang on 2017/12/19.*/

public classMyTemplate {public static voidmain(String[] args){

String template= "${name},${sex},${birthYear}年出生,${graduateYear}年毕业于${university}。";

Map params = new HashMap<>();

params.put("name","张三");

params.put("sex","男");

params.put("birthYear","1990");

params.put("graduateYear","2012");

params.put("university","清华大学");long start =System.currentTimeMillis();for(int i=0;i<10000;i++) {

String result=render(template, params);if(i==9999) {

System.out.println(result);

}

}long end =System.currentTimeMillis();

System.out.println("cost time:"+(end-start)+"ms");

start=System.currentTimeMillis();for(int i=0;i<10000;i++) {

String result=render2(template, params);if(i==9999) {

System.out.println(result);

}

}

end=System.currentTimeMillis();

System.out.println("cost time:"+(end-start)+"ms");

}public static String render(String template,Mapparams){//使用builder拼接,比string相加提高不少效率

StringBuilder builder = newStringBuilder();//定义控制变量

boolean $Begin = false;boolean paramBegin = false;//boolean paramEnd = false;

StringBuilder key = null;//循环匹配

for(int i=0;i

if(c=='$'){

$Begin= true;

}if($Begin && c=='{'){

paramBegin= true;

builder.deleteCharAt(builder.length()-1); //删除添加的$字符

key= newStringBuilder();continue;

}//参数key

if(paramBegin && c!='}'){if(c=='{'){

System.out.println("模板格式错误!位置:"+i);

}else{

key.append(c);

}continue;

}//结束标识

if(paramBegin && c=='}'){//paramEnd = true;//拼接参数key对应的值

builder.append(params.get(key.toString()));//重置控制变量

$Begin = false;

paramBegin= false;//paramEnd = false;

continue;

}//默认情况

builder.append(c); //添加字符

}returnbuilder.toString();

}public static String render2(String template,Mapparams){for(Map.Entryentry:params.entrySet()){

String key=entry.getKey();

String value=entry.getValue();

template= template.replace("${"+key+"}",value);

}returntemplate;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值