1.创建实体树
package com.hontye.parameter.entity.tree;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* tree TODO
*
* @author kangxu2 2017-1-7
*
*/
public class Tree {
/**
* 节点ID
*/
private String itemtype_id;
/**
* 显示节点文本
*/
private String itemtype_name;
/**
* 节点状态,open closed
*/
private String state = "open";
/**
* 节点是否被选中 true false
*/
private boolean checked = false;
/**
* 节点属性
*/
private List
2.构建树
package com.hontye.parameter.entity.tree;
import java.util.ArrayList;
import java.util.List;
/**
* 构建tree
* TODO
*
* @author kangxu2 2017-1-7
*
*/
public class BuildTree {
/**
*
* TODO
*
* @author kangxu2 2017-1-7
*
* @param nodes
* @return
*/
public static Tree build(List> nodes) {
if(nodes == null){
return null;
}
List> topNodes = new ArrayList>();
for (Tree children : nodes) {
String pid = children.getParent_itemtypeid();
if (pid == null || "".equals(pid) || pid.equals("0")) {
topNodes.add(children);
continue;
}
for (Tree parent : nodes) {
String id = parent.getItemtype_id();
if (id != null && id.equals(pid)) {
parent.getChildren().add(children);
children.setParent(true);
parent.setChildren(true);
parent.setAttributes(parent.getAttributes());
continue;
}
}
}
Tree root = new Tree();
if (topNodes.size() == 1) {
root = topNodes.get(0);
} else {
root.setItemtype_id("-1");
root.setParent_itemtypeid("");
root.setParent(false);
root.setChildren(true);
root.setChecked(true);
root.setChildren(topNodes);
root.setItemtype_name("顶级节点");
}
return root;
}
}
3.以上两个类创建好了,就可以编写一个测试类,测试一下
package com.hontye.parameter.entity.tree;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BuildTreeTester {
public static void main(String[] args) {
List> trees = new ArrayList>();
List tests = new ArrayList();
tests.add(new Test("0", "", "关于本人"));
tests.add(new Test("1", "0", "技术学习"));
tests.add(new Test("2", "0", "兴趣"));
tests.add(new Test("3", "1", "JAVA"));
tests.add(new Test("4", "1", "oracle"));
tests.add(new Test("5", "1", "spring"));
tests.add(new Test("6", "1", "springmvc"));
tests.add(new Test("7", "1", "fastdfs"));
tests.add(new Test("8", "1", "linux"));
tests.add(new Test("9", "2", "骑行"));
tests.add(new Test("10", "2", "吃喝玩乐"));
tests.add(new Test("11", "2", "学习"));
tests.add(new Test("12", "3", "String"));
tests.add(new Test("13", "4", "sql"));
tests.add(new Test("14", "5", "ioc"));
tests.add(new Test("15", "5", "aop"));
tests.add(new Test("16", "1", "等等"));
tests.add(new Test("17", "2", "等等"));
tests.add(new Test("18", "3", "等等"));
tests.add(new Test("19", "4", "等等"));
tests.add(new Test("20", "5", "等等"));
for (Test test : tests) {
Tree tree = new Tree();
tree.setItemtype_id(test.getId());
tree.setParent_itemtypeid(test.getPid());
tree.setItemtype_name(test.getText());
List> lmp = new ArrayList>();
Map mp = new HashMap();
mp.put("COSTDEVICE_NUMBER", "");
mp.put("PRICE_PER", "");
mp.put("ORDER_INDEX", "");
mp.put("ADJUST_DATE", "");
mp.put("IS_LEAF", "");
lmp.add(mp);
tree.setAttributes(lmp);
trees.add(tree);
}
Tree t = BuildTree.build(trees);
System.out.println(t);
}
}
class Test {
private String id;
private String pid;
private String text;
private String costdevice_number;
private String price_per;
private String order_index;
private String adjust_date;
private String is_leaf;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Test(String id, String pid, String text) {
super();
this.id = id;
this.pid = pid;
this.text = text;
}
public String getCostdevice_number() {
return costdevice_number;
}
public void setCostdevice_number(String costdevice_number) {
this.costdevice_number = costdevice_number;
}
public String getPrice_per() {
return price_per;
}
public void setPrice_per(String price_per) {
this.price_per = price_per;
}
public String getOrder_index() {
return order_index;
}
public void setOrder_index(String order_index) {
this.order_index = order_index;
}
public String getAdjust_date() {
return adjust_date;
}
public void setAdjust_date(String adjust_date) {
this.adjust_date = adjust_date;
}
public String getIs_leaf() {
return is_leaf;
}
public void setIs_leaf(String is_leaf) {
this.is_leaf = is_leaf;
}
public Test() {
super();
}
@Override
public String toString() {
return "Test [id=" + id + ", pid=" + pid + ", text=" + text + "]";
}
}
4.运行后控制台输出如下:
{"checked":true,"children":[{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"0","itemtype_name":"关于本人","parent":false,"parent_itemtypeid":"","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"12","itemtype_name":"String","parent":true,"parent_itemtypeid":"3","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"18","itemtype_name":"等等","parent":true,"parent_itemtypeid":"3","state":"open"}],"itemtype_id":"3","itemtype_name":"JAVA","parent":true,"parent_itemtypeid":"1","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"13","itemtype_name":"sql","parent":true,"parent_itemtypeid":"4","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"19","itemtype_name":"等等","parent":true,"parent_itemtypeid":"4","state":"open"}],"itemtype_id":"4","itemtype_name":"oracle","parent":true,"parent_itemtypeid":"1","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"14","itemtype_name":"ioc","parent":true,"parent_itemtypeid":"5","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"15","itemtype_name":"aop","parent":true,"parent_itemtypeid":"5","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"20","itemtype_name":"等等","parent":true,"parent_itemtypeid":"5","state":"open"}],"itemtype_id":"5","itemtype_name":"spring","parent":true,"parent_itemtypeid":"1","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"6","itemtype_name":"springmvc","parent":true,"parent_itemtypeid":"1","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"7","itemtype_name":"fastdfs","parent":true,"parent_itemtypeid":"1","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"8","itemtype_name":"linux","parent":true,"parent_itemtypeid":"1","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"16","itemtype_name":"等等","parent":true,"parent_itemtypeid":"1","state":"open"}],"itemtype_id":"1","itemtype_name":"技术学习","parent":false,"parent_itemtypeid":"0","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"9","itemtype_name":"骑行","parent":true,"parent_itemtypeid":"2","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"10","itemtype_name":"吃喝玩乐","parent":true,"parent_itemtypeid":"2","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"11","itemtype_name":"学习","parent":true,"parent_itemtypeid":"2","state":"open"},{"attributes":[{"PRICE_PER":"","IS_LEAF":"","ADJUST_DATE":"","COSTDEVICE_NUMBER":"","ORDER_INDEX":""}],"checked":false,"children":[],"itemtype_id":"17","itemtype_name":"等等","parent":true,"parent_itemtypeid":"2","state":"open"}],"itemtype_id":"2","itemtype_name":"兴趣","parent":false,"parent_itemtypeid":"0","state":"open"}],"itemtype_id":"-1","itemtype_name":"顶级节点","parent":false,"parent_itemtypeid":"","state":"open"}
树形结构创建成功。
5.得到树形结构后,通过.toString()得到String字符串,再通过net.sf.json.JSONObject.fromObject(String string)获取到JsonObject对象做业务处理。如下:
net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(costDeviceTree.toString());