import java.util.ArrayList;
import java.util.List;
public class Test {
//idWorker就是为了生成一个唯一的id
private static SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0);
private static List<MessageVO> list = new ArrayList<MessageVO>();
public static void main(String[] args) {
long traceID =idWorker.nextId();
long spanID =idWorker.nextId();
MessageVO vo = new MessageVO("main方法开始了……", traceID, -1L, spanID);
list.add(vo);
doA(traceID,spanID);
doB(traceID,spanID);
treeMenuList(-1L,0);
}
public static void treeMenuList(Long pid,int d){
int tmp =0;
for(MessageVO mu: list){
//遍历出父id等于参数的id
if(mu.getpID().equals(pid)){
for(int i=0;i<d;i++){
System.out.print("***");
}
System.out.println(mu);
//递归遍历下一级
if(tmp==0){
tmp=d+1;
}
treeMenuList(mu.getSpanID(),tmp);
}
}
}
private static void doA(long traceID,long pid) {
long spanID =idWorker.nextId();
MessageVO vo = new MessageVO("doA方法开始了……", traceID, pid, spanID);
list.add(vo);
doE(traceID,spanID);
}
private static void doB(long traceID,long pid) {
long spanID =idWorker.nextId();
MessageVO vo = new MessageVO("doB方法开始了……", traceID, pid, spanID);
list.add(vo);
doC(traceID,spanID);
doD(traceID,spanID);
}
private static void doD(long traceID,long pid) {
long spanID =idWorker.nextId();
MessageVO vo = new MessageVO("doD方法开始了……", traceID, pid, spanID);
list.add(vo);
}
private static void doC(long traceID,long pid) {
long spanID =idWorker.nextId();
MessageVO vo = new MessageVO("doC方法开始了……", traceID, pid, spanID);
list.add(vo);
}
private static void doE(long traceID,long pid) {
long spanID =idWorker.nextId();
MessageVO vo = new MessageVO("doE方法开始了……", traceID, pid, spanID);
list.add(vo);
doF(traceID,spanID);
}
private static void doF(long traceID,long pid) {
long spanID =idWorker.nextId();
MessageVO vo = new MessageVO("doF方法开始了……", traceID, pid, spanID);
list.add(vo);
}
}
public class MessageVO {
private String messg; //内容
private Long traceID; //全局唯一的 TraceID
private Long pID; //上级id
private Long spanID; //全局唯一的 SpanID
public MessageVO() {
}
public MessageVO(String messg, Long traceID, Long pID, Long spanID) {
this.messg = messg;
this.traceID = traceID;
this.pID = pID;
this.spanID = spanID;
}
public String getMessg() {
return messg;
}
public void setMessg(String messg) {
this.messg = messg;
}
public Long getTraceID() {
return traceID;
}
public void setTraceID(Long traceID) {
this.traceID = traceID;
}
public Long getpID() {
return pID;
}
public void setpID(Long pID) {
this.pID = pID;
}
public Long getSpanID() {
return spanID;
}
public void setSpanID(Long spanID) {
this.spanID = spanID;
}
@Override
public String toString() {
return messg;
}
}
运行结果如下:
如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!