java的树_java 树

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 children = new ArrayList<>();

2.获取当前节点

parameterType="java.lang.String"

resultType="cn.cloudwalk.isc.data.system.common.model.Region">

SELECT

*

FROM

`cw_ge_region_info`

REGION_CODE = #{regionCode}

AND STATE = 1;

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

public List getTree() {

//先获取到所有数据

treeList=regionMapper.selectAll();

if(treeList==null) {return null;}

//获取到所有一级节点

String regionCode = PropertiesUtil.getRegioncode();

Region dto = new Region();

dto.setState(1d);

dto.setRegionCode(regionCode);

List parentList = regionMapper.select(dto);

List 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 childTreeNodes  = getChildTreeById(cid);

for(Region child : childTreeNodes){

Region n = recursiveTree(child.getRegionId());

List list = node.getChildren();

list.add(n);

}

return node;

}

/**

* 根据CID查询节点对象

*/

public Region getRegionById(String cid){

Map map = new HashMap<>(CommonConstant.HASHMAP_INITIALCAPACITY);

map =  getTreeMap();

return (Region) map.get(cid);

}

/**

* 一次性取所有数据,为了减少对数据库查询操作

* @return

*/

public Map getTreeMap(){

Map map = new HashMap<>(CommonConstant.HASHMAP_INITIALCAPACITY);

map =  new HashMap();

if(null != treeList){

for(Region d : treeList){

map.put(d.getRegionId(), d);

}

}

return map;

}

/**

* 根据父节点CID获取所有了节点

*/

public List getChildTreeById(String cid){

List list = new ArrayList<>();

if(null != treeList){

for (Region d : treeList) {

if(null != cid){

if (cid.equals(d.getParentId())) {

list.add(d);

}

}

}

}

return list;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值