最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)簡單的模板渲染

 更新時間:2017年12月19日 13:45:09   作者:追極  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單的模板渲染的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)簡單的模板渲染,供大家參考,具體內(nèi)容如下

代碼

package com.hdwang;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by hdwang on 2017/12/19.
 */
public class MyTemplate {

 public static void main(String[] args){

  String template = "${name},${sex},${birthYear}年出生,${graduateYear}年畢業(yè)于${university}。";
  Map<String,String> params = new HashMap<>();
  params.put("name","張三");
  params.put("sex","男");
  params.put("birthYear","1990");
  params.put("graduateYear","2012");
  params.put("university","清華大學(xué)");

  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,Map<String,String> params){
  //使用builder拼接,比string相加提高不少效率
  StringBuilder builder = new StringBuilder();

  //定義控制變量
  boolean $Begin = false;
  boolean paramBegin = false;
  //boolean paramEnd = false;
  StringBuilder key = null;

  //循環(huán)匹配
  for(int i=0;i<template.length();i++){
   char c = template.charAt(i);
   //開始標(biāo)識
   if(c=='$'){
    $Begin = true;
   }
   if($Begin && c=='{'){
    paramBegin = true;
    builder.deleteCharAt(builder.length()-1); //刪除添加的$字符

    key = new StringBuilder();
    continue;
   }

   //參數(shù)key
   if(paramBegin && c!='}'){
    if(c=='{'){
     System.out.println("模板格式錯誤!位置:"+i);
    }else {
     key.append(c);
    }
    continue;
   }

   //結(jié)束標(biāo)識
   if(paramBegin && c=='}'){
    //paramEnd = true;
    //拼接參數(shù)key對應(yīng)的值
    builder.append(params.get(key.toString()));

    //重置控制變量
    $Begin = false;
    paramBegin = false;
    //paramEnd = false;
    continue;
   }

   //默認(rèn)情況
   builder.append(c); //添加字符
  }

  return builder.toString();
 }

 public static String render2(String template,Map<String,String> params){
  for(Map.Entry<String,String> entry:params.entrySet()){
   String key = entry.getKey();
   String value = entry.getValue();
   template = template.replace("${"+key+"}",value);
  }
  return template;
 }
}

運(yùn)行結(jié)果

張三,男,1990年出生,2012年畢業(yè)于清華大學(xué)。
cost time:65ms
張三,男,1990年出生,2012年畢業(yè)于清華大學(xué)。
cost time:161ms

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)讀取鍵盤輸入保存到txt文件,再統(tǒng)計(jì)并輸出每個單詞出現(xiàn)次數(shù)的方法

    Java實(shí)現(xiàn)讀取鍵盤輸入保存到txt文件,再統(tǒng)計(jì)并輸出每個單詞出現(xiàn)次數(shù)的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)讀取鍵盤輸入保存到txt文件,再統(tǒng)計(jì)并輸出每個單詞出現(xiàn)次數(shù)的方法,涉及java文件I/O操作及字符串遍歷、運(yùn)算實(shí)現(xiàn)統(tǒng)計(jì)功能相關(guān)技巧,需要的朋友可以參考下
    2017-07-07
  • SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存的示例代碼

    SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存的示例代碼

    這篇文章主要介紹了SpringBoot整合Guava Cache實(shí)現(xiàn)全局緩存,Guava Cache是Google Guava庫中的一個模塊,提供了基于內(nèi)存的本地緩存實(shí)現(xiàn),文中介紹了SpringBoot整合使用Guava Cache的具體步驟,需要的朋友可以參考下
    2024-03-03
  • Spring AOP 與代理的概念與使用

    Spring AOP 與代理的概念與使用

    大家知道我現(xiàn)在還是一個 CRUD 崽,平時用 AOP 也是 CV 大法。最近痛定思痛,決定研究一下 Spring AOP 的原理。 這里寫一篇文章總結(jié)一下。主要介紹 Java 中 AOP 的實(shí)現(xiàn)原理,最后以兩個簡單的示例來收尾。
    2020-10-10
  • spring.mvc.servlet.load-on-startup屬性方法源碼解讀

    spring.mvc.servlet.load-on-startup屬性方法源碼解讀

    這篇文章主要介紹了spring.mvc.servlet.load-on-startup的屬性方法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • MyBatis?在使用上的注意事項(xiàng)及其辨析(最新最全整理)

    MyBatis?在使用上的注意事項(xiàng)及其辨析(最新最全整理)

    這篇文章主要介紹了MyBatis的在使用上的注意事項(xiàng)及其辨析,本文內(nèi)容比較長,是小編用心給大家整理的,圖文實(shí)例代碼相結(jié)合給大家講解的非常詳細(xì),需要的朋友參考下吧
    2024-06-06
  • java 中 MD5加密的實(shí)例

    java 中 MD5加密的實(shí)例

    這篇文章主要介紹了java 中 MD5加密的實(shí)例的相關(guān)資料,通過本文希望能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java 動態(tài)代理你真的懂了嗎(動態(tài)和代理)

    Java 動態(tài)代理你真的懂了嗎(動態(tài)和代理)

    動態(tài)代理分兩部分,動態(tài)和代理,今天通過本文給大家普及代碼模式及動態(tài)代理的概念及示例代碼,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Java8 Lamda方法引用和構(gòu)造引用原理

    Java8 Lamda方法引用和構(gòu)造引用原理

    這篇文章主要介紹了Java8 Lamda方法引用和構(gòu)造引用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 深入Java萬物之母Object類詳情

    深入Java萬物之母Object類詳情

    這篇文章主要介紹了Java萬物之母Object類詳情,Object類,它是所有類的默認(rèn)父類 ,子類不用使用extends關(guān)鍵字繼承它,不管是JDK中的類,還是自定義的類
    2022-06-06
  • java編寫屬于自己的線程池

    java編寫屬于自己的線程池

    這篇文章主要為大家詳細(xì)介紹了java編寫屬于自己的線程池,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03

最新評論

读书| 罗平县| 屏东市| 龙山县| 清新县| 灵寿县| 临沧市| 浏阳市| 建德市| 广元市| 日喀则市| 休宁县| 睢宁县| 靖边县| 繁峙县| 绵阳市| 嘉荫县| 阿克苏市| 长汀县| 镶黄旗| 通江县| 临潭县| 天镇县| 新丰县| 巫溪县| 来安县| 汉中市| 赫章县| 阳山县| 武山县| 武功县| 凤山县| 右玉县| 溆浦县| 法库县| 虹口区| 皮山县| 绍兴市| 武安市| 介休市| 石柱|