简单的一个小例子,话不多说,直接上源码。方便大家以后用的着
package com.test;
import java.util.ArrayList;
import java.util.List;
public class Main {
public Main() {
// TODO Auto-generated constructor stub
ClassNode rootNode = new ClassNode(true, "", "", 1, 1, "IT数码");
rootNode.setNodes(generaterNodes(rootNode, 2, "手机", "电脑", "平板"));
rootNode.getNodes().get(0)
.setNodes(generaterNodes(rootNode.getNodes().get(0), 3, "Android", "Apple", "WinPhone"));
rootNode.getNodes().get(1).setNodes(generaterNodes(rootNode.getNodes().get(1), 3, "外星人", "苹果", "MicroSurface"));
rootNode.getNodes().get(2).setNodes(generaterNodes(rootNode.getNodes().get(2), 3, "华为", "小米", "iPad"));
List nodes = new ArrayList<>();
nodes.add(rootNode);
showClassNode(rootNode, nodes);
}
private List generaterNodes(ClassNode parent, int level, String... names) {
List nodes = new ArrayList<>();
for (int i = 0; i < names.length; i++) {
nodes.add(new ClassNode(parent, false, "", "", level, i + 1, names[i]));
}
return nodes;
}
public void showClassNode(ClassNode node, List nodes) {
if (!node.isRoot())
printPlus(node.getLevel() - 1);
System.out.println(node.toString());
if (node.hasNodes()) {
List childNode = node.getNodes();
for (ClassNode classNode : childNode) {
showClassNode(classNode, childNode);
}
}
}
private void printPlus(int spaceNum) {
for (int i = 0; i < spaceNum; i++)
System.out.print(" ");
System.out.print("├─");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Main();
}
}
节点类
package com.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ClassNode {
/**
* 如IT数码,为根结点,那么level为1,下面有手机,电脑,level分别为2,2,position分别为1,2
*/
private boolean root;// 是否根结点
private String id;// 用户编号
private String sid;// 系统编号
private int level;// 当前所在级别
private int position;// 当前级别位置
private String name;// 当前级别名称
private List nodes;
private ClassNode parent;// 父亲节点
public ClassNode(boolean root, String id, String sid, int level, int position, String name) {
this(null, root, id, sid, level, position, name, null);
}
public ClassNode(boolean root, String id, String sid, int level, int position, String name, List nodes) {
this(null, root, id, sid, level, position, name, nodes);
}
public ClassNode(ClassNode parent, boolean root, String id, String sid, int level, int position, String name) {
this(parent, root, id, sid, level, position, name, null);
}
public ClassNode(ClassNode parent, boolean root, String id, String sid, int level, int position, String name,
List nodes) {
super();
this.parent = parent;
this.root = root;
this.id = id;
this.sid = sid;
this.level = level;
this.position = position;
this.name = name;
this.nodes = nodes;
}
public boolean isRoot() {
return root;
}
public void setRoot(boolean root) {
this.root = root;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getNodes() {
return nodes;
}
public void setNodes(List nodes) {
this.nodes = nodes;
}
public boolean hasNodes() {
return nodes != null && nodes.size() > 0;
}
public ClassNode getParent() {
return parent;
}
public void setParent(ClassNode parent) {
this.parent = parent;
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuffer buffer = new StringBuffer();
List strings = new ArrayList<>();
buffer.append(getName());
buffer.append("[");
ClassNode parent = this.parent;
while (parent != null) {
StringBuffer sb = new StringBuffer();
sb.append(parent.getLevel());
sb.append("-");
sb.append(parent.getPosition());
sb.append("-");
strings.add(sb.toString());
parent = parent.getParent();
}
Collections.reverse(strings);//反转
for (String string : strings) {
buffer.append(string);
}
buffer.append(getLevel());
buffer.append("-");
buffer.append(getPosition());
buffer.append("]");
return buffer.toString();
}
}