java编程两种树形菜单结构的转换代码
首先看看两种树形菜单结构的代码示例。
SingleTreeNode:
packagecom.zzj.tree;
publicclassSingleTreeNode{
privateintid;
privateintpId;
privateStringname;
publicSingleTreeNode(){
}
publicSingleTreeNode(intid,intpId,Stringname){
this.id=id;
this.pId=pId;
this.name=name;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicintgetpId(){
returnpId;
}
publicvoidsetpId(intpId){
this.pId=pId;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@Override
publicStringtoString(){
return"SingleTreeNode[id="+id+",pId="+pId+",name="+name+"]";
}
}
这种结构很适合存储到关系型数据库中。
MultiTreeNode:
packagecom.zzj.tree;
importjava.util.List;
publicclassMultiTreeNode{
privateintid;
privateStringname;
privateListchildren;
publicMultiTreeNode(){
}
publicMultiTreeNode(intid,Stringname){
this.id=id;
this.name=name;
}
publicMultiTreeNode(intid,Stringname,Listchildren){
this.id=id;
this.name=name;
this.children=children;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicListgetChildren(){
returnchildren;
}
publicvoidsetChildren(Listchildren){
this.children=children;
}
@Override
publicStringtoString(){
return"MultiTreeNode[id="+id+",name="+name+",children="+children+"]";
}
}
两种转换器
ToMultiTreeTransformer:
packagecom.zzj.tree;
importjava.util.ArrayList;
importjava.util.List;
publicclassToMultiTreeTransformer{
privateListsingleTreeNodes;
privateListmultiTreeNodes=newArrayList<>();
publicToMultiTreeTransformer(ListsingleTreeNodes){
this.singleTreeNodes=singleTreeNodes;
}
publicListtransform(){
//先找出所有的根节点
for(inti=0;ichildren=multiTreeNode.getChildren();
if(children==null){
children=newArrayList<>();
multiTreeNode.setChildren(children);
}
children.add(child);
setChildren(child);
}
}
}
}
ToSingleTreeTransformer:
packagecom.zzj.tree;
importjava.util.ArrayList;
importjava.util.List;
publicclassToSingleTreeTransformer{
privateListmultiTreeNodes;
privateListsingleTreeNodes=newArrayList<>();
publicToSingleTreeTransformer(ListmultiTreeNodes){
this.multiTreeNodes=multiTreeNodes;
}
publicListtransform(){
//先获取根节点
for(inti=0;ichildren=multiTreeNode.getChildren();
if(children!=null){
for(intj=0;j
测试
packagecom.zzj.tree;
importjava.util.ArrayList;
importjava.util.List;
publicclassTreeTransformerTest{
privatefinalstaticListSINGLE_TREE=newArrayList();
static{
SingleTreeNodeChina=newSingleTreeNode(1,0,"中国");
SINGLE_TREE.add(China);
SingleTreeNodeHunan=newSingleTreeNode(2,1,"湖南");
SINGLE_TREE.add(Hunan);
SingleTreeNodeChangsha=newSingleTreeNode(3,2,"长沙");
SINGLE_TREE.add(Changsha);
SingleTreeNodeHubei=newSingleTreeNode(4,1,"湖北");
SINGLE_TREE.add(Hubei);
SingleTreeNodeWuhan=newSingleTreeNode(5,4,"武汉");
SINGLE_TREE.add(Wuhan);
SingleTreeNodeAmerica=newSingleTreeNode(6,0,"美国");
SINGLE_TREE.add(America);
SingleTreeNodeCalifornia=newSingleTreeNode(7,6,"加利福尼亚");
SINGLE_TREE.add(California);
SingleTreeNodeLosAngeles=newSingleTreeNode(8,7,"洛杉矶");
SINGLE_TREE.add(LosAngeles);
}
publicstaticvoidmain(String[]args)throwsException{
ToMultiTreeTransformermultiTreeTransformer=newToMultiTreeTransformer(SINGLE_TREE);
ListmultiTreeNodes=multiTreeTransformer.transform();
System.out.println(multiTreeNodes);
ToSingleTreeTransformersingleTreeTransformer=newToSingleTreeTransformer(multiTreeNodes);
ListsingleTreeNodes=singleTreeTransformer.transform();
System.out.println(singleTreeNodes);
}
}
输出结果:
[MultiTreeNode[id=1,name=中国,children=[MultiTreeNode[id=2,name=湖南,children=[MultiTreeNode[id=3,name=长沙,children=null]]],MultiTreeNode[id=4,name=湖北,children=[MultiTreeNode[id=5,name=武汉,children=null]]]]],MultiTreeNode[id=6,name=美国,children=[MultiTreeNode[id=7,name=加利福尼亚,children=[MultiTreeNode[id=8,name=洛杉矶,children=null]]]]]]
[SingleTreeNode[id=1,pId=0,name=中国],SingleTreeNode[id=6,pId=0,name=美国],SingleTreeNode[id=2,pId=1,name=湖南],SingleTreeNode[id=3,pId=2,name=长沙],SingleTreeNode[id=4,pId=1,name=湖北],SingleTreeNode[id=5,pId=4,name=武汉],SingleTreeNode[id=7,pId=6,name=加利福尼亚],SingleTreeNode[id=8,pId=7,name=洛杉矶]]
总结
以上就是本文关于java编程两种树形菜单结构的转换代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
Java实现生成Excel树形表头完整代码示例
Java语言描述二叉树的深度和宽度
java算法实现红黑树完整代码示例
如有不足之处,欢迎留言指出!
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短