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_哈希表内建函数相关推荐
- 【C#】集合_哈希表_字典_泛型_文件
数组能做到:存放同种类型数据,且数据个数确定 object类型的数组能满足:放各种类型的数据,确定放多少个,但是随意插入元素,数组做不到 集合能做到:存放各种数据类型,且不确定存放多少个,能做到随意插 ...
- PHP哈希表碰撞攻击原理
哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招.本文结合PHP内核源码,聊一聊这种攻击的原理及实现. 哈希表碰撞攻击的基本原理 ...
- 在C#中应用哈希表(Hashtable)
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...
- 自己写的哈希表以及解决哈希冲突
哈希表就是键值key-value对,使用hash函数让key产生哈希值,当不同的key产生相同的哈希值时就是哈希冲突了,产生哈希冲突可以使用拉链法. hash.c #include <stdio ...
- PHP内核中的哈希表结构
https://github.com/HonestQiao/tipi/commit/17ca680289e490763a6a402f79afa2a13802bb36 下载:https://github ...
- 用开放地址法中的线性探查法解决冲突实现哈希表的运算
为了更深的理解哈希算法,自己写了用开放地址法中的线性探查法解决冲突实现哈希表的运算. /*** Created by lirui on 14-8-13.* 用开放地址法中的线性探查法解决冲突实现哈希表 ...
- 散列表查找(哈希表)
散列函数构造经常要考虑: 1.散列表的长度 2.关键字的长度 3.关键字的分布情况 4.计算散列函数所需的时间 5.记录的查找频率 一个"好"的散列函数应遵循一下两条原则 (1)函 ...
- 不同表结构数据迁移_数据结构:哈希 哈希函数 哈希表
写在前面 希望你们看了能够有所收获,同时觉得不错的朋友可以点赞和关注下我,以后还会有更多精选文章分享给大家!大家可以关注一下java提升专栏 java提升zhuanlan.zhihu.com 什么是 ...
- 【数据结构】 哈希表 详解
目录 1. 概念 引入 2. 冲突 2.1 概念 2.2 避免 2.3 冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节(重点) 2.5 冲突-解决 2.5.1 闭散列 2.6 冲突-解决- ...
最新文章
- ProtoBuf使用笔记
- PHP 使用 Redis
- iOS中的CADisplayLink定时器
- java 等待_Java并发之等待/通知机制
- mano安全_爱立信:O-RAN存在的安全风险
- 60度斜坡怎么计算_【测绘】南方CASS土方计算方法—方格网法
- Nplayer本地文件拷到服务器,手把手教你简易NAS构建,手机/平板/智能电视随意调取,家庭存储云共享,有了自己的网络云盘后再也不用担心容量不够了!...
- bzoj1176: [Balkan2007]Mokia cdq
- Mac OS 看机起动JIRA
- android 开源fc模拟器_用 Go 撸了一个 NES/FC/红白机模拟器——GoNES
- linux 删除网桥接口,linux 网桥代码分析 三 网桥及网桥端口的添加与删除
- IBM X3650 M4服务器数据恢复成功案例
- 向量检索milvus之一:以图搜图
- vue 图片加载完成事件
- 获取视频旋转角度,并对视频进行旋转
- 【072】Breathe Machine-减压深呼吸训练
- postgresql索引_PostgreSQL中的索引— 10(Bloom)
- 威海北洋电气java面试题_面试题_76_to_81_Java 最佳实践的面试问题
- j2ee开发的各种技术
- 基尔霍夫矩阵矩阵树定理学习笔记