码迷,mamicode.com
首页 > 编程语言 > 详细

java 树

时间:2019-03-07 15:54:36      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:i++   type   lis   ++   _id   find   节点   param   put   

1.实体

 @Id
 @Column( name = "REGION_ID")
 private String regionId;
 @Column( name = "REGION_CODE")
 private String regionCode;
 @Column( name = "REGION_NAME")
 private String regionName;
 @Column( name = "PARENT_ID")
 private String parentId;
 @Column( name = "STATE")
 private Double state;
 @Column( name = "REMARK")
 private String remark;
 @Column( name = "CREATED_TIME")
 private Double createTime;
 
 @Transient
 private List<Region> children = new ArrayList<>();

2.获取当前节点

 <select id="findParentList"
  parameterType="java.lang.String"
  resultType="cn.cloudwalk.isc.data.system.common.model.Region">
  SELECT
   *
  FROM
   `cw_ge_region_info`
  <where>
   <if test="regionCode != null and regionCode != ‘‘">
    REGION_CODE = #{regionCode}
   </if>
   AND STATE = 1;
  </where>
 </select>

3.方法(获取当前节点下所有节点)

 public List<Region> getTree() {
     //先获取到所有数据
     treeList=regionMapper.selectAll(); 
     if(treeList==null) {return null;}
     //获取到所有一级节点
     String regionCode = PropertiesUtil.getRegioncode();
     Region dto = new Region();
     dto.setState(1d);
     dto.setRegionCode(regionCode);
     List<Region> parentList = regionMapper.select(dto);
     List<Region> list = new ArrayList<>();
     if(parentList != null){
         for (int i = 0; i < parentList.size(); i++) {
             list.add(recursiveTree(parentList.get(i).getRegionId()));
         }
     }
     return list;
 }
 /**
  * 递归算法解析成树形结构
  * @param cid
  */
 public Region recursiveTree(String cid) {
  Region node = getRegionById(cid);
     List<Region> childTreeNodes  = getChildTreeById(cid);
     for(Region child : childTreeNodes){
      Region n = recursiveTree(child.getRegionId());
      List<Region> list = node.getChildren();
      list.add(n);
     }
     return node;
 }
 /**
  * 根据CID查询节点对象
  */
 public Region getRegionById(String cid){
  Map<String, Region> map = new HashMap<>(CommonConstant.HASHMAP_INITIALCAPACITY);
     map =  getTreeMap();
     return (Region) map.get(cid);
 }
 /**
  * 一次性取所有数据,为了减少对数据库查询操作
  * @return
  */
 public Map<String, Region> getTreeMap(){
  Map<String, Region> map = new HashMap<>(CommonConstant.HASHMAP_INITIALCAPACITY);
     map =  new HashMap<String, Region>();
     if(null != treeList){
         for(Region d : treeList){
             map.put(d.getRegionId(), d);
         }
     }
     return map;
 }
 /**
  * 根据父节点CID获取所有了节点
  */
 public List<Region> getChildTreeById(String cid){
     List<Region> list = new ArrayList<>();
     if(null != treeList){
         for (Region d : treeList) {
             if(null != cid){
                 if (cid.equals(d.getParentId())) {
                     list.add(d);
                 }
             }
         }
     }
     return list;
 }

java 树

标签:i++   type   lis   ++   _id   find   节点   param   put   

原文地址:https://www.cnblogs.com/jinnian18sui/p/10489764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!