说类链表树 这不是标准的树,也不是标准的链表,两者结合的产物。 数据存储结构如图所示:
数据模型类。
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public final class TitleLinkNode {
private String name ; // 标题名称
private String outlineLvl; // 大纲级别
private String titleNo; // 编号
private int treeOrder; // 树编号
private TitleLinkNode parent; // 父标题节点
private TitleLinkNode previous; // 前标题节点 previous == null
private TitleLinkNode next; // 后标题节点
private TitleLinkNode head; // 头节点
private boolean readHead=false;
private boolean readNext=false;
public TitleLinkNode() {
}
public TitleLinkNode(String name, String outlineLvl) {
this(name,outlineLvl,null,-1,null,null,null);
}
public TitleLinkNode(String name, String outlineLvl, String titleNo, int treeOrder, TitleLinkNode parent, TitleLinkNode previous, TitleLinkNode next) {
this.name = name;
this.outlineLvl = outlineLvl;
this.titleNo = titleNo;
this.treeOrder = treeOrder;
this.parent = parent;
this.previous = previous;
this.next = next;
}
public boolean isReadHead() {
return readHead;
}
public void setReadHead(boolean readHead) {
this.readHead = readHead;
}
public boolean isReadNext() {
return readNext;
}
public void setReadNext(boolean readNext) {
this.readNext = readNext;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOutlineLvl() {
return outlineLvl;
}
public void setOutlineLvl(String outlineLvl) {
this.outlineLvl = outlineLvl;
}
public int getOrder(TitleLinkNode node) {
int order = 1;
while((node = node.getPrevious()) != null) {
order ++;
}
return order;
}
public String getWholeTitle() {
return this.getTitleNo() + "." + this.getName();
}
public String getTitleNo() {
List<Integer> orders = new Array