使用hibernate实现树形结构无限级分类_第1页
使用hibernate实现树形结构无限级分类_第2页
使用hibernate实现树形结构无限级分类_第3页
使用hibernate实现树形结构无限级分类_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

继承关系如下,假如要实现国家分类: CountryTree extends BaseTree(abstract class) BaseTree(abstract class) implements Tree(interface) 为节省版面,下面代码去掉了javadocTree.java Java代码 1. /* 2. *实现了树的基本操作,上溯、下溯、子节点的添加/移除和递归查找、对象关联等 3. */4. packagetest.testtree.base; 5. importjava.util.Set; 6. 7. publicinterfaceTree 8. publicStringgetCode(); 9. publicStringgetName(); 10. publicStringgetDescription(); 11. publicTreegetParent(); 12. publicSetgetParents(); 13. publicbooleanisRoot(); 14. publicbooleanisLeaf(); 15. publicbooleanisParentOf(Treetree); 16. publicbooleanisChildOf(Treetree); 17. publicvoidaddChild(Treetree); 18. publicvoidrmChild(Treetree); 19. publicSetgetAllChildren(); 20. publicSetgetChildren(); 21. publicSetgetAllLeaves(); 22. publicvoidaddObject(Objectobj); 23. publicvoidrmObject(Objectobj); 24. publicSetgetObjects(); 25. publicLonggetId(); 26. /* * 实现了树的基本操作,上溯、下溯、子节点的添加/移除和递归查找、对象关联等 */package test.testtree.base;import java.util.Set;public interface Tree public String getCode(); public String getName(); public String getDescription(); public Tree getParent(); public Set getParents(); public boolean isRoot(); public boolean isLeaf(); public boolean isParentOf(Tree tree); public boolean isChildOf(Tree tree); public void addChild(Tree tree); public void rmChild(Tree tree); public Set getAllChildren(); public Set getChildren(); public Set getAllLeaves(); public void addObject(Object obj); public void rmObject(Object obj); public Set getObjects(); public Long getId();BaseTree.java Java代码 1. packagetest.testtree.base; 2. importjava.util.*; 3. 4. publicabstractclassBaseTreeextendsBasePojoimplementsTree 5. protectedStringcode; 6. protectedStringname; 7. protectedStringdescription; 8. protectedBaseTreeparent; 9. protectedSetchildren=newHashSet(); 10. protectedSetobjects=newHashSet(); 11. publicvoidsetCode(Stringcode) 12. this.code=code; 13. 14. abstractpublicStringgetCode(); 15. publicvoidsetName(Stringname) 16. =name; 17. 18. abstractpublicStringgetName(); 19. publicvoidsetDescription(Stringdescription) 20. this.description=description; 21. 22. abstractpublicStringgetDescription(); 23. abstractpublicTreegetParent(); 24. publicbooleanisRoot() 25. return(getParent()=null); 26. 27. publicbooleanisLeaf() 28. return(this.getChildren().size()=0); 29. 30. publicbooleanisParentOf(Treetree) 31. if(tree=null|(BaseTree)tree).equals(this) 32. /*如果对方为空*/33. returnfalse; 34. elseif(this.isLeaf() 35. /*如果自己为叶子,则返回FALSE*/36. returnfalse; 37. elseif(tree.isRoot() 38. /*如果对方为根,返回FALSE*/39. returnfalse; 40. else 41. BaseTreebt=(BaseTree)(tree.getParent(); 42. if(this.equals(bt) 43. /*如果对方的父节点是自己,则返回TRUE*/44. returntrue; 45. else 46. /*判断对方的父节点是否是自己的孩子,进行递归*/47. returnisParentOf(bt); 48. 49. 50. 51. publicbooleanisChildOf(Treetree) 52. return(tree.isParentOf(this); 53. 54. publicvoidaddChild(Treetree) 55. children.add(tree); 56. 57. publicvoidrmChild(Treetree) 58. children.remove(tree); 59. (BaseTree)tree).setParent(null); 60. 61. publicSetgetAllLeaves() 62. Setset_old=this.getAllChildren(); 63. Setset=newHashSet(); 64. set.addAll(set_old); 65. Iteratoritr=set_old.iterator(); 66. while(itr.hasNext() 67. BaseTreebt=(BaseTree)itr.next(); 68. if(!bt.isLeaf() 69. set.remove(bt); 70. 71. 72. returnset; 73. 74. publicSetgetParents() 75. Setparents=newHashSet(); 76. Treep=this.getParent(); 77. if(p!=null) 78. parents.add(p); 79. parents.addAll(p.getParents(); 80. 81. returnparents; 82. 83. 84. publicSetgetAllChildren() 85. Setset=newHashSet(); 86. Stackstack=newStack(); 87. stack.push(this); 88. while(!stack.empty() 89. BaseTreebt=(BaseTree)stack.pop(); 90. set.add(bt); 91. Iteratoritr=bt.getChildren().iterator(); 92. while(itr.hasNext() 93. BaseTreebtchild=(BaseTree)itr.next(); 94. stack.push(btchild); 95. 96. 97. set.remove(this); 98. returnset; 99. 100. abstractpublicSetgetChildren(); 101. publicvoidaddObject(Objectobj) 102. objects.add(obj); 103. 104. publicvoidrmObject(Objectobj) 105. objects.remove(obj); 106. 107. abstractpublicSetgetObjects(); 108. publicvoids

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论