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 + -
显示快捷键?