tree 节点递归 封装

/**

* 微信 获取项目地点 按级别分级

*

*@paramrequest

*@return

*/

@Transactional

@ResponseBody

@ApiOperation(value = "获取项目地点按级别分级", notes = "我的项目中获取项目地点按级别分级")

@RequestMapping(value = "/getProAddressLevel", method = RequestMethod.GET)

publicReturnVO getProAddressLevel(HttpServletRequest request) throwsException {

PageHelper.orderBy("p_id,orders");

List<Map<String, Object>> allList = areaMapper.getAllAreasBylevel();

List<Map<String, Object>> list = newArrayList<>();//返回结果

Map<String, List<Map<String, Object>>> map = newHashMap<>();//以pid为key 存放子节点

for(inti = 0; i < allList.size(); i++) {

Map<String, Object> m = allList.get(i);

String pId = (String) m.get("p_id");

if("0".equals(pId)) {

// Map<String, Object> firstTree = new HashMap<>();

// firstTree.put("name", m.get("name"));

// firstTree.put("id", m.get("id"));

// firstTree.put("pId", m.get("p_id"));

// list.add(firstTree);

list.add(m);

} else{

if(map.get(pId) != null) {

map.get(pId).add(m);

} else{

List<Map<String, Object>> ldepartment = newArrayList<>();

ldepartment.add(m);

map.put(pId, ldepartment);

}

}

}

allList.clear();

allList = null;

for(Map<String, Object> m : list) {//通过1级目录无限去寻找子节点

getTreeNode(m, map);

}

return newReturnVO(ReturnVO.CODE_SUCCESS, ReturnVO.MSG_SUCCESS, list);

}

 

/**

*@Description: 寻找子节点

*/

private voidgetTreeNode(Map<String, Object> pm, Map<String, List<Map<String, Object>>> cm) {

String id = (String) pm.get("id");

if(cm.get(id) != null) {//存在子节点

List<Map<String, Object>> lm = cm.get(id);

List<Map<String, Object>> list = newArrayList<>();

for(Map m : lm) {

Map<String, Object> cTree = newHashMap<>();

cTree.put("name", m.get("name"));

cTree.put("id", m.get("id"));

cTree.put("pId", m.get("pId"));

list.add(cTree);

getTreeNode(cTree, cm);

}

pm.put("subNotes", list);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值