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_哈希表内建函数相关推荐

  1. 【C#】集合_哈希表_字典_泛型_文件

    数组能做到:存放同种类型数据,且数据个数确定 object类型的数组能满足:放各种类型的数据,确定放多少个,但是随意插入元素,数组做不到 集合能做到:存放各种数据类型,且不确定存放多少个,能做到随意插 ...

  2. PHP哈希表碰撞攻击原理

    哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招.本文结合PHP内核源码,聊一聊这种攻击的原理及实现. 哈希表碰撞攻击的基本原理 ...

  3. 在C#中应用哈希表(Hashtable)

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...

  4. 自己写的哈希表以及解决哈希冲突

    哈希表就是键值key-value对,使用hash函数让key产生哈希值,当不同的key产生相同的哈希值时就是哈希冲突了,产生哈希冲突可以使用拉链法. hash.c #include <stdio ...

  5. PHP内核中的哈希表结构

    https://github.com/HonestQiao/tipi/commit/17ca680289e490763a6a402f79afa2a13802bb36 下载:https://github ...

  6. 用开放地址法中的线性探查法解决冲突实现哈希表的运算

    为了更深的理解哈希算法,自己写了用开放地址法中的线性探查法解决冲突实现哈希表的运算. /*** Created by lirui on 14-8-13.* 用开放地址法中的线性探查法解决冲突实现哈希表 ...

  7. 散列表查找(哈希表)

    散列函数构造经常要考虑: 1.散列表的长度 2.关键字的长度 3.关键字的分布情况 4.计算散列函数所需的时间 5.记录的查找频率 一个"好"的散列函数应遵循一下两条原则 (1)函 ...

  8. 不同表结构数据迁移_数据结构:哈希 哈希函数 哈希表

    写在前面 希望你们看了能够有所收获,同时觉得不错的朋友可以点赞和关注下我,以后还会有更多精选文章分享给大家!大家可以关注一下java提升专栏 java提升​zhuanlan.zhihu.com 什么是 ...

  9. 【数据结构】 哈希表 详解

    目录 1. 概念 引入 2. 冲突 2.1 概念 2.2 避免 2.3 冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节(重点) 2.5 冲突-解决 2.5.1 闭散列 2.6 冲突-解决- ...

最新文章

  1. ProtoBuf使用笔记
  2. PHP 使用 Redis
  3. iOS中的CADisplayLink定时器
  4. java 等待_Java并发之等待/通知机制
  5. mano安全_爱立信:O-RAN存在的安全风险
  6. 60度斜坡怎么计算_【测绘】南方CASS土方计算方法—方格网法
  7. Nplayer本地文件拷到服务器,手把手教你简易NAS构建,手机/平板/智能电视随意调取,家庭存储云共享,有了自己的网络云盘后再也不用担心容量不够了!...
  8. bzoj1176: [Balkan2007]Mokia cdq
  9. Mac OS 看机起动JIRA
  10. android 开源fc模拟器_用 Go 撸了一个 NES/FC/红白机模拟器——GoNES
  11. linux 删除网桥接口,linux 网桥代码分析 三 网桥及网桥端口的添加与删除
  12. IBM X3650 M4服务器数据恢复成功案例
  13. 向量检索milvus之一:以图搜图
  14. vue 图片加载完成事件
  15. 获取视频旋转角度,并对视频进行旋转
  16. 【072】Breathe Machine-减压深呼吸训练
  17. postgresql索引_PostgreSQL中的索引— 10(Bloom)
  18. 威海北洋电气java面试题_面试题_76_to_81_Java 最佳实践的面试问题
  19. j2ee开发的各种技术
  20. 基尔霍夫矩阵矩阵树定理学习笔记

热门文章

  1. 【互联网安全】DDoS攻防原理及实战
  2. [Curator] Path Cache 的使用与分析
  3. IOS中UITableView异步加载图片的实现
  4. 走过13,展望14----希望是个好东西
  5. Python初学问题-if/else的运用
  6. 服务器高并发的解决方法
  7. 大数据与智能算法(二-应用级技术)-SMU在线学习笔记
  8. 读书笔记 - 企业精简架构
  9. java 企业门户网站 源码 自适应响应式 freemarker 静态引擎 html5 SSM
  10. linux与unix时间戳互转