014_哈希表内建函数
生活随笔
收集整理的這篇文章主要介紹了
014_哈希表内建函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. keys
1.1. 一個包含哈希表中查找到的鍵的序列。
2. values
2.1. 一個包含哈希表中子變量的序列。
3. sort_by
3.1. 返回由給定的哈希表子變量來升序排序的哈希表序列。(要降序排列使用該內建函數后還要使用reverse內建函數。)這個規則和sort內建函數是一樣的, 除了序列中的子變量必須是哈希表類型, 而且你不得不給哈希變量的名稱, 那會用來決定排序順序。
3.2. 如果你用來排序的子變量的層次很深(也就是說, 它是子變量的子變量的子變量, 以此類推), 那么你可以使用序列來作為參數, 它指定了子變量的名字, 來向下引導所需的子變量。
4. 例子
4.1. 新建一個名為FMBuiltInsForHash的動態Web工程, 同時添加相關jar包。
4.2. 編寫FMFactory.java
package com.fm.util;import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import freemarker.template.Configuration; import freemarker.template.TemplateExceptionHandler;public class FMFactory {private final static FMFactory instance = new FMFactory();private FMFactory() {}public static FMFactory getInstance() {return instance;}private Map<String, Configuration> map = new ConcurrentHashMap<String, Configuration>();// 創建單個Configuration實例public synchronized Configuration getCfg(Object servletContext, String path) {if(null != map.get(path)) {return map.get(path);}Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);cfg.setServletContextForTemplateLoading(servletContext, path);cfg.setDefaultEncoding("utf-8");cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);map.put(path, cfg);return cfg;}}4.3. 編寫BuiltInsForHash.java
package com.fm.action;import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fm.util.FMFactory; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException;public class BuiltInsForHash extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Configuration cfg = FMFactory.getInstance().getCfg(req.getServletContext(), "/WEB-INF/templates");Template template = cfg.getTemplate("builtinsforhash.html");Map<String, Object> root = new HashMap<String, Object>();Writer out = new OutputStreamWriter(resp.getOutputStream());try {template.process(root, out);} catch (TemplateException e) {e.printStackTrace();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }4.4. 修改web.xml
4.5. 在/WEB-INF/templates下編寫builtinsforhash.html
<!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>哈希表內建函數</title></head><body><h2>一個包含哈希表中查找到的鍵的序列</h2><#assign hash = {"name":"mouse", "price":50}><#assign keys = hash?keys><#list keys as key>${key} = ${hash[key]};<br /></#list><h2>一個包含哈希表中子變量的序列</h2><#assign values = hash?values><#list values as value>${value}<br /></#list><h2>返回由給定的哈希表子變量來升序排序的哈希表序列</h2><#assign ls = [{"name":"whale", "weight":2000},{"name":"Barbara", "weight":53},{"name":"zeppelin", "weight":-200},{"name":"aardvark", "weight":30},{"name":"beetroot", "weight":0.3}]>Order by name:<br /><#list ls?sort_by("name") as i>- ${i.name}: ${i.weight}<br /></#list><br />Order by weight:<br /><#list ls?sort_by("weight") as i>- ${i.name}: ${i.weight}<br /></#list><br /><#assign members = [{"name": {"first": "Joe", "last": "Smith"}, "age": 40},{"name": {"first": "Fred", "last": "Crooger"}, "age": 35},{"name": {"first": "Amanda", "last": "Fox"}, "age": 25}]>Sorted by name.last: <br /><#list members?sort_by(['name', 'last']) as m>- ${m.name.last}, ${m.name.first}: ${m.age} years old<br /></#list></body> </html>4.6. 運行項目
總結
以上是生活随笔為你收集整理的014_哈希表内建函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 013_序列内建函数
- 下一篇: 008_setting指令