前台缓存树节点中保存的是一组键值对,其中值是一个Map或直接就是String字符串。如果是Map的话还需要考虑Map中是否包装了List以及List中是否还会存在Map的情况。显然需要通过递归调用才能将这组数据结构全部遍历出来。
主方法中调用递归方法:
//调用递归方法
String table = displayMap(node.getData(),"1");
//取得展示数据返回前台
String sPage = "cache/showcache";
return new ModelAndView(sPage, "model", table);
//需要写两个方法,分别递归Map类型和List类型
public String displayMap(Map data,String borderStr) {
StringBuffer sb = new StringBuffer();
sb.append("<table cellpadding=\"0\" cellspacing=\"0\" border='"+borderStr+"'>");
Iterator iter = data.entrySet().iterator();
while (iter.hasNext()) {
sb.append("<tr>");
Entry e = (Entry) iter.next();
String key = (String) e.getKey();
sb.append("<td>");
sb.append(key);
sb.append("</td>");
sb.append("<td>");
Object value = e.getValue();
if (value instanceof Map) {
sb.append(displayMap((Map) value,"0"));
} else if (value instanceof List) {
sb.append(displayList((List) value));
} else {
sb.append(value);
}
sb.append("</td>");
sb.append("</tr>");
}
sb.append("</table>");
return sb.toString();
}
// 递归List类型
public String displayList(List data) {
StringBuffer sb = new StringBuffer();
sb.append("<table cellpadding=\"0\" cellspacing=\"0\" border=\"1\" frame=\"below\">");
Iterator iter = data.iterator();
while (iter.hasNext()) {
sb.append("<tr>");
sb.append("<td>");
Object value = iter.next();
if (value instanceof Map) {
sb.append(displayMap((Map) value,"0"));
} else if (value instanceof List) {
sb.append(displayList((List) value));
} else {
sb.append(value);
}
sb.append("</td>");
sb.append("</tr>");
}
sb.append("</table>");
return sb.toString();
}
Map常用keyset进行遍历,返回此映射中包含的键的Set视图。它的优点在于可以根据你所想要的key值得到你想要的values,更具灵活性。
代码示例:
public static void workByKeySet(Map<String, Student> map) {
Set<String> key = map.keySet();
for (Iterator it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
System.out.println(map.get(s));
}
}
这里使用的另一种遍历Map的方法,通过entrySet取得此映射中包含映射关系的Set视图。
public static void workByEntry(Map<String, Student> map) {
Set<Map.Entry<String, Student>> set = map.entrySet();
for (Iterator<Map.Entry<String, Student>> it = set.iterator(); it.hasNext();) {
Map.Entry<String, Student> entry = (Map.Entry<String, Student>) it.next();
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
}
}
最后来看看API中对Map.Entry接口的解释:
映射项(键-值对)。Map.entrySet 方法返回映射的 collection
视图,其中的元素属于此类。获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。这些 Map.Entry
对象仅 在迭代期间有效;更确切地讲,如果在迭代器返回项之后修改了底层映射,则某些映射项的行为是不确定的,除了通过
setValue 在映射项上执行操作之外。
分享到:
相关推荐
在IT行业中,处理文档和数据通常...总的来说,结合Word和Excel的读写操作与递归算法,可以在自动化报告生成、数据分析等领域发挥重要作用。通过熟练掌握这些技能,开发者能够更高效地处理文档和数据,提升工作效率。
这个例子可能涉及到将一个单一的表格数据转换为树形结构。在数据库中,如果有一个具有父ID和子ID的表格,可以用来表示层级关系,如部门结构,那么可以使用递归查询来获取所有级别的数据。C#中,我们可以创建一个递归...
"excel 递归导出 sql语句"的主题涉及如何利用递归算法来解决此类问题,目的是将具有层级关系的数据从Excel表格中导出并转化为SQL插入语句,以便轻松地将数据导入数据库。 首先,我们要理解什么是递归。递归是一种...
在Python编程中,递归遍历目录是一种常见的任务,它涉及到文件系统操作和数据处理。在给定的场景中,我们需要使用Python编写一个脚本,它能够遍历指定路径下的所有文件和子目录,收集文件路径和文件名,并将这些信息...
在IT行业中,获取网页指定表格数据是一项常见的任务,特别是在数据分析、网页抓取和自动化报告生成等领域。这通常涉及到网络爬虫技术,利用编程语言如Python的库,如BeautifulSoup、Scrapy或Pandas来实现。以下是...
通过以上分析,我们可以看出,JSP结合递归算法遍历树形数据结构不仅是一种高效的解决方案,而且在处理具有复杂层级关系的数据时,能够提供清晰、直观的展示方式。这种方法尤其适用于构建论坛、分类目录或任何需要...
Excel提供了表格结构,可以轻松地组织和排序大量的数据。每个文件对应的哈希值和可能的密码组合可以作为一行数据,包含文件路径、文件名、SHA-1哈希值以及密码相关的信息。 总的来说,这个过程可以确保在不暴露原始...
//注意: 数据表格式必须是 递归类型 //比如: //ID Pid Name //1 0 a //2 0 b //3 0 c //4 0 d //5 1 e //id为5的 是ID为1的子类... //6 1 f //同上 //7 5 g //ID为7的是ID 为5的子类 以此类推 //技术交流...
比如,使用AngularJS的ng-repeat指令,可以轻松地根据JSON数据生成表格。 在提供的压缩包“JSONTable-master”中,很可能是包含了这样一个JavaScript实现的示例代码或者库。这个项目可能包含HTML、CSS和JavaScript...
在网页开发中,表格数据结构常常用于展示层次化信息,例如组织结构、目录树等。这里,我们将会深入探讨如何使用jQuery来实现递归遍历表格的tr子节点。 首先,我们需要了解HTML表格的基本结构。一个表格由`<table>`...
4. **实例化组件**:在Vue实例的`data`对象中定义`tableData`(表格数据)和`columnData`(多级表头数据),并初始化它们。 5. **响应式更新**:如果表头数据动态变化,Vue的响应式系统会自动更新表格的布局,保持...
4. 递归调用:在函数内部,生成两个子问题,一个是在`currentCode`后添加0,另一个是在`currentCode`后添加1,然后对这两个子问题进行递归调用。 5. 结果收集:每次递归返回时,将生成的格雷码添加到结果集中。 6. ...
本文将详细介绍如何在Axure中利用中继器实现对表格数据的编辑功能。通过本教程的学习,读者可以掌握以下关键技能: 1. **中继器表格的设计与创建**。 2. **为表格中的每一行添加编辑功能**。 3. **实现对特定行数据...
函数 `getCates` 是一个多层递归函数,用于生成嵌套的类别数据。它接收两个参数:`$arr`(类别数组)和 `$pid`(当前处理的父类别ID)。在循环中,它查找所有父类别ID等于$pid的子类别,并将它们作为一个新的数组...
这里的“数字整列”可能指的是生成一系列连续的整数序列,用于填充表格的某一列,可能有多种生成方式,如循环、递归等。 2. **表格构建**:利用易语言的控件库,可以创建出类似Excel的高级表格界面,用户可以通过...
在***中实现无限分类生成表格的方法主要利用了递归算法和后台代码自定义输出表格技术。无限分类通常指一个分类可以拥有多个子分类,子分类又可以拥有更多的子分类,形成树状结构。在Web开发中,这种结构常用于导航...
动态加载树(Tree)和动态加载表格(Table)是两种常见的数据展示方式,它们在网页应用中广泛使用,特别是在需要显示层级结构数据(如组织结构、文件系统)和大量表格数据(如报表、用户列表)的情况下。 **动态...
Excel通常用于处理表格数据,而XML则是一种结构化数据交换的标准,广泛用于数据存储和网络传输。本文将深入探讨如何将Excel文件全方位解析并转换为XML数据,以及这样做的好处。 首先,我们来看Excel数据的读取。在...
首先,我们需要了解数据库中的数据通常是二维表格形式,每行代表一个实体,列则表示实体的属性。而树形结构则是层次化的数据表示方式,每个节点可以有零个或多个子节点,呈现出父节点与子节点的上下级关系。 1. **...
首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在处理树状结构时,JSON数据通常以键值对的形式表示层级关系,如...