java递归实例(一)---递归构造Tree结构
来源:互联网 发布:mysql本地数据库地址 编辑:程序博客网 时间:2024/05/22 17:04
/** * 递归算法测试 * @author ASUS * */public class RecursionTest {public String getCategrotyRel(Integer parentId,Integer idMerchant)throws Exception{//parentId = 0;//String retStr = "[{\"catName\":\"手机\",\"id\":1,\"parentId\":0}"+ "{\"catName\":\"苹果\",\"id\":2,\"parentId\":1},"+ "{\"catName\":\"小米\",\"id\":3,\"parentId\":1},"+ "{\"catName\":\"电脑\",\"id\":4,\"parentId\":0}]";List<Map> opeCateInfoList = JsonUtil.jsonToObjectList(retStr, Map.class);List<Map<String,Object>> retList = this.setMchtRelTree(parentId,idMerchant,opeCateInfoList);return JsonUtil.objectToString(retList);}//递归构造树结构数据private List<Map<String, Object>> setMchtRelTree(Integer parentId,Integer idMerchant, List<Map> opeCateInfoList) throws Exception {List<Map> interRes = opeCateInfoList;List<Map<String,Object>> retList = new ArrayList<Map<String,Object>>();//根据父节点ID 获取所有 关系List<MchtOpeCatRel> rsList = mchtOpeCatRelMapper.getOpeCatRel(idMerchant,parentId);if(rsList != null && rsList.size() > 0){for(MchtOpeCatRel item : rsList){Map<String,Object> data = new HashMap<String,Object>();for(Map<String,Object> map : interRes){if(((Integer)map.get("id")).intValue() == item.getIdOpeCate().intValue()){data.put("name", (String)map.get("catName"));}}data.put("idOpeCate", item.getIdOpeCate());data.put("parentId", item.getParentId());//以当前idOpeCate为父节点,递归查询 所有 关系List<Map<String,Object>> childList = setMchtRelTree(item.getIdOpeCate(),idMerchant,interRes);if(childList != null && childList.size() > 0){data.put("children", childList);}retList.add(data); }}return retList;}}
由于关系表mcht_opecat_rel中存的是ID之间的关系,ID对应的name会随时改变,因此需要实时调用接口获取(接口部分忽略,如上述代码中写死的retStr)
第一次调用getCategrotyRel()时,parentId传人的是0,即先构造一级节点,然后逐级构造。
这样运行结果如下:[{idOpeCate=1, name=手机, parentId=0, children=[{idOpeCate=2, name=苹果, parentId=1}, {idOpeCate=3, name=小米, parentId=1}]},
{idOpeCate=4, name=电脑, parentId=0}]
0 0
- java递归实例(一)---递归构造Tree结构
- java递归实例(二)---递归读取并修改Tree结构
- java tree 结构递归查询
- java递归与反向递归(逆向递归)查询树tree结构根据关键字过滤数据
- Java递归算法构造JSON树形结构
- Java基础--递归算法(递归结构)
- Java tree递归
- java 递归树结构
- java递归实例
- java递归简单实例
- Java递归算法实例
- Java递归实例
- JAVA常用递归实例
- java递归简单实例
- java 递归实例
- 非递归学习树结构(六)--RB-Tree(红黑树)
- JAVA递归生成tree树
- java 实现递归实现tree
- QuickContactBadge 自定义获取联系人
- mysql 忘记密码
- Jquery Dom操作
- mac下的 sublime 设置
- iOS之Target
- java递归实例(一)---递归构造Tree结构
- 在c++函数形参里引用临时变量出错,导致"no match for xxx"
- java操作Json工具类
- 单链表查找倒数第k个节点
- Docker实战(八):Docker安装ElasticSearch环境
- 上传或提交等待过程图标loading.gif的实现
- 数据结构学期期末总结
- 遗传算法-入门(Java demo)
- 提取字符串中的数字-指针版本-(C语言描述)