关于递归的思路的例子
来源:互联网 发布:nginx ip转发 编辑:程序博客网 时间:2024/06/05 15:26
前台框架是easyui,需要返回给前台tree的数据,返回的数据格式为[{id:1,text:22,children:(map)},{id:2,text:22,children:(map)},{id:3,text:22,children:(map)},{id:4,text:22,children:(map)}]。就是List<Map<String,Object>>。
这里需要注意的是递归方法中要做的内容必须要清晰,对于该递归方法而言,任务就是要把传入的Element的数据提取到传入的map中,如果该element有对应的子节点,则得到子节点,把子节点的element递归调用该方法,同时传入的还有childMap。
代码为:
public static List<Map<String, Object>> getFileList() { List<Map<String, Object>> redata = new ArrayList<Map<String,Object>>(); Document document = FileDao.readFile("cda/fileConfig.xml"); Element rootElement = document.getRootElement(); List<Element> lists = rootElement.elements(); for (Element element : lists) { Map<String,Object> map = new HashMap<String,Object>(); eachFile(element, map); redata.add(map); } return redata; } @SuppressWarnings("unchecked") public static void eachFile(Element element,Map<String,Object> map) { map.put("id", element.attributeValue("id")); map.put("text", element.attributeValue("text")); List<Map<String, Object>> childList = new ArrayList<>(); map.put("children", childList); if(element.elements()!=null){ List<Element> childElements = element.elements(); for (Element child : childElements) { if(!child.getName().equals("dataset")){ map.put("state", "closed"); Map<String,Object> map1 = new HashMap<String,Object>(); eachFile(child,map1); childList.add(map1); } } } }
这里需要注意的是递归方法中要做的内容必须要清晰,对于该递归方法而言,任务就是要把传入的Element的数据提取到传入的map中,如果该element有对应的子节点,则得到子节点,把子节点的element递归调用该方法,同时传入的还有childMap。
如果不传入map,则在方法内新建map,构建完map后返回。改造后如下代码:
public static List<Map<String, Object>> getFileList() {List<Map<String, Object>> redata = new ArrayList<Map<String,Object>>();Document document = FileDao.readFile("cda/fileConfig.xml");Element rootElement = document.getRootElement();List<Element> lists = rootElement.elements();for (Element element : lists) {redata.add(eachFile(element));}return redata;}@SuppressWarnings("unchecked")public static Map<String,Object> eachFile(Element element) {Map<String,Object> map = new HashMap<String,Object>();map.put("id", element.attributeValue("id"));map.put("text", element.attributeValue("text"));if(element.elements()!=null){List<Element> childElements = element.elements();List<Map<String, Object>> childList = new ArrayList<Map<String,Object>>();map.put("children", childList);for (Element child : childElements) {if(!child.getName().equals("dataset")){childList.add(eachFile(child));}}if(childList.size()!=0){map.put("state", "closed");}}return map;}
1 0
- 关于递归的思路的例子
- 关于递归的一个例子
- 关于递归问题的一些小例子
- 关于如何理解递归的两则小例子
- 递归使用的思路
- 递归(以及几个关于递归的小例子)
- 蓝桥杯,关于数独的递归思路解决问题
- python 关于斐波那契数列的递归思路
- 递归函数的解题思路
- 递归的两种思路
- 用递归解决问题的思路
- 递归的例子
- 递归的一些例子
- 递归的例子
- 递归的一个例子
- 递归的小例子
- php递归的例子
- 递归的例子
- {最代码}如何在eclipse jee中检出项目并转换为Maven project,最后转换为Dynamic web project
- 【IOS开发】高德地图定位坐标偏差
- 深入理解Java内存模型
- JSON数据解析
- U-Boot在启动之初为何要关闭Cache和MMU?
- 关于递归的思路的例子
- IDEA中的常用快捷
- Shell脚本实现自动修改IP地址
- SVN实际应用中的注意事项
- cocos2d-js cc.DrawNode用法示例
- 深入理解Java内部类
- Tcp设置发送和接收超时
- 由于没有远程桌面授权服务器可以提供许可证,远程会话被中断
- scala编码规范