需求:将数据进行多级菜单展示,逻辑处理类将数据库中数据进行再次封装,方便UI层调用
实现:
Test.java
public static void main(String[] arg){
//模拟从数据库中取出的数据
ArrayList<TreeElement> treeList = new ArrayList<TreeElement>();
//初始化测试数据
for(int i=0;i<4;i++){
TreeElement treeElement = new TreeElement(null,""+i,true);
for(int j=0;j<4;j++){
TreeElement tree11 = new TreeElement(treeElement,treeElement.self+"-"+j,true);
for(int k=0;k<4;k++){
TreeElement tree111 = new TreeElement(tree11,tree11.self+"-"+k,false);
treeList.add(tree111);
}
treeList.add(tree11);
}
treeList.add(treeElement);
}
//打印输出测试数据
for(TreeElement element : treeList){
System.out.println(element.self);
}
//一级菜单数据集合
ArrayList<TreeElement> arrayList = new ArrayList<TreeElement>();
//将内存中要进行展示的数据进行再次封装,方便UI层调用
Iterator<TreeElement> iterator = treeList.iterator();
while(iterator.hasNext()){
TreeElement element = iterator.next();
if(element.parent == null){
arrayList.add(element);
}else{
element.parent.childList.add(element);
}
}
//打印输出封装后的数据
for(TreeElement tree : arrayList){
System.out.println(tree.self);
myPrint(tree);
}
}
private static void myPrint(TreeElement tree){
if(tree.hasNext){
for(TreeElement treeElement : tree.childList){
myPrint(treeElement);
}
}else{
System.out.println(tree.self);
}
}
private static class TreeElement{
public TreeElement parent;
public String self;
public boolean hasNext;
public ArrayList<TreeElement> childList;
public TreeElement(TreeElement parent,String self,boolean hasNext){
this.parent = parent;
this.self = self;
this.hasNext = hasNext;
childList = new ArrayList<TreeElement>();
}
}