recursion.java
来自「一个简单ssh+extjs的人力资源管理系统(转载)」· Java 代码 · 共 69 行
JAVA
69 行
package com.idealab.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.idealab.dao.TreeNode;
public class Recursion {
public StringBuffer returnStr = new StringBuffer();
private int count = 0;
public void list2JsonTree(List<TreeNode> list, TreeNode node) {
if (hasChild(list, node)) {
returnStr.append("{id:");
returnStr.append(node.getId());
returnStr.append(",text:");
returnStr.append(node.getText());
returnStr.append(",children:[");
System.out.println("以下为returnStr: " + returnStr.toString());
List childList = getChildList(list, node);
Iterator it = childList.iterator();
while (it.hasNext()) {
TreeNode n = (TreeNode) it.next();
list2JsonTree(list, n);
}
returnStr.append("]},");
} else {
returnStr.append("{id:");
returnStr.append(node.getId());
returnStr.append(",leaf:true");
returnStr.append(",parentId:");
int i = list.indexOf(node);
++i;
if (i < list.size())
list2JsonTree(list, list.get(i));
}
}
private boolean hasChild(List list, TreeNode node) { // 判断是否有子节点
return getChildList(list, node).size() > 0 ? true : false;
}
public List getChildList(List list, TreeNode node) { // 得到子节点列表
List<TreeNode> li = new ArrayList();
Iterator it = list.iterator();
System.out.println("以下为" + node.getText() + "的查询结果:");
while (it.hasNext()) {
TreeNode n = (TreeNode) it.next();
/*System.out.println(n.getText() + "父节点的id = " + n.getParentid()
+ "," + node.getText() + "'s id = " + node.getId());
if ((n.getParentid().intValue()) == (node.getId().intValue())) {
// 错误:if语句中比较的竟然是Integer对象,所以这两个对象不能相等(==).
// 纠错:利用之前和之后插入打印语句找出错误在if语句里面.
li.add(n);
System.out.println(n.getText() + "添加进去了.");
}*/
}
System.out.println("-----------------------------------------------");
return li;
}
public String modifyStr(String returnStr) {// 修饰一下才能满足Extjs的Json格式
return ("[" + returnStr + "]").replaceAll(",]", "]");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?