首页 / JAVA / JAVA递归查询与反向递归
JAVA递归查询与反向递归
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA递归查询与反向递归,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4626字,纯文字阅读大概需要7分钟。
内容图文
递归查询具体实现方法:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.lhm.value.TreeJson;
public class RecursiveTreeMap {
public static List<TreeJson> getTreeMap(List<TreeJson> treeList) {
List<TreeJson> parentTreeList = new ArrayList<TreeJson>();
List<TreeJson> childrenTreeList = new ArrayList<TreeJson>();
Map<String, String> allIdMap = new HashMap<String, String>();
if (treeList == null || treeList.size() == 0) {
return parentTreeList;
}
for (TreeJson tree : treeList){
allIdMap.put(tree.getId(), tree.getId());
}
//遍历找出所有的根节点和非根节点
for (TreeJson tree : treeList) {
if ("-1".equals(tree.getParentid()) || !allIdMap.containsKey(tree.getParentid())){
parentTreeList.add(tree);
}else{
childrenTreeList.add(tree);
}
}
//递归获取所有子节点
if (parentTreeList != null && parentTreeList.size() > 0) {
for (TreeJson tree : parentTreeList) {
//添加所有子级
List<TreeJson> children = getChildrenTreeList(childrenTreeList, tree.getId());
tree.setChildren(children);
}
}
return parentTreeList;
}
//递归查询子节点
public static List<TreeJson> getChildrenTreeList(List<TreeJson> childrenList, String parentId) {
List<TreeJson> parentTreeList = new ArrayList<TreeJson>();
List<TreeJson> childrenTreeList = new ArrayList<TreeJson>();
if (childrenList == null || childrenList.size() == 0) {
return parentTreeList;
}
//找出所有的根节点和非根节点
for (TreeJson tree : childrenList) {
if (parentId.equals(tree.getParentid())) {
parentTreeList.add(tree);
} else {
childrenTreeList.add(tree);
}
}
//查询子节点
if (parentTreeList != null && parentTreeList.size() > 0) {
for (TreeJson tree : parentTreeList) {
//递归查询子节点
List<TreeJson> children = getChildrenTreeList(childrenTreeList, tree.getId());
tree.setChildren(children);
}
}
return parentTreeList;
}
}
反向递归查询具体实现方法:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.lhm.value.TreeJson;
public class RecursiveParentTree {
public static List<TreeJson> getParentTree(List<TreeJson> treeList) {
List<TreeJson> parentTreeList = new ArrayList<TreeJson>();
List<TreeJson> childrenTreeList = new ArrayList<TreeJson>();
Map<String, String> parentIdMap = new HashMap<String, String>();
if (treeList == null || treeList.size() == 0) {
return childrenTreeList;
}
for (TreeJson tree : treeList){
parentIdMap.put(tree.getParentid(), tree.getParentid());
}
//遍历找出所有的根节点和非根节点
for (TreeJson tree : treeList) {
if ("-1".equals(tree.getParentid()) || parentIdMap.containsKey(tree.getId())) {
parentTreeList.add(tree);
}else {
childrenTreeList.add(tree);
}
}
//递归获取所有父节点
if (childrenTreeList != null && childrenTreeList.size() > 0) {
for (TreeJson tree : childrenTreeList) {
//添加所有父级
List<TreeJson> parents = getParentTreeList(parentTreeList, tree.getParentid());
tree.setParents(parents);
}
}
return childrenTreeList;
}
//递归查询父节点
private static List<TreeJson> getParentTreeList(List<TreeJson> parents, String id) {
List<TreeJson> parentTreeList = new ArrayList<TreeJson>();
List<TreeJson> childrenTreeList = new ArrayList<TreeJson>();
if (parents == null || parents.size() == 0) {
return childrenTreeList;
}
//找出所有的根节点和非根节点
for (TreeJson tree : parents) {
if (id.equals(tree.getId())) {
childrenTreeList.add(tree);
} else {
parentTreeList.add(tree);
}
}
//查询父节点
if (childrenTreeList != null && childrenTreeList.size() > 0) {
for (TreeJson tree : childrenTreeList) {
//递归查询父节点
List<TreeJson> parentList = getParentTreeList(parentTreeList, tree.getParentid());
tree.setParents(parentList);
}
}
return childrenTreeList;
}
}
TreeJson实体类
import java.util.ArrayList;
import java.util.List;
public class TreeJson {
private String id;
private String text;
private String parentid;
private String url;
private String iconcls;
private List<TreeJson> children = new ArrayList<TreeJson>();
private List<TreeJson> parents = new ArrayList<TreeJson>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getParentid() {
return parentid;
}
public void setParentid(String parentid) {
this.parentid = parentid;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getIconcls() {
return iconcls;
}
public void setIconcls(String iconcls) {
this.iconcls = iconcls;
}
public List<TreeJson> getChildren() {
return children;
}
public void setChildren(List<TreeJson> children) {
this.children = children;
}
public List<TreeJson> getParents() {
return parents;
}
public void setParents(List<TreeJson> parents) {
this.parents = parents;
}
}
花了一点时间整理出来, 有任何问题欢迎指导
内容总结
以上是互联网集市为您收集整理的JAVA递归查询与反向递归全部内容,希望文章能够帮你解决JAVA递归查询与反向递归所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。