Log in

View Full Version : [ASK]Recursive Tree Java


JagoVB
20th November 2011, 12:52 AM
pagi agan agan.... ane punya kasus seperti ini,

silahkan diliat dulu codingan ane..... :D




Spoiler for parents:





Code:

public List listParents() {
return (List) getHibernateTemplate().find("from Category c where c.parentId = 0 order by c.name asc");
}












Spoiler for childs:





Code:

public List listChilds(Category category) {
return (List) getHibernateTemplate().find("from Category c where c.parentId = ?", new Object[]{category.getId()});
}












Spoiler for main:





Code:

public List listMain() {
List hl = new ArrayList();

List parents = listParents();
for (Category ctg : parents) {
CategoryListModelHelper cmh = new CategoryListModelHelper();
cmh.setId(ctg.getId());
cmh.setName(ctg.getName());
hl.add(cmh);

List childs = listChilds(ctg);
for (Category childCtg : childs) {
CategoryListModelHelper cmh2 = new CategoryListModelHelper();
String name = ctg.getName() + " >> " + childCtg.getName();
cmh2.setId(childCtg.getId());
cmh2.setName(name);
hl.add(cmh2);

List childs2 = listChilds(childCtg);
for (Category childCtg2 : childs2) {
CategoryListModelHelper cmh3 = new CategoryListModelHelper();
String name2 = ctg.getName() + " >> " + childCtg.getName() + " >> "+childCtg2.getName();
cmh3.setId(childCtg2.getId());
cmh3.setName(name2);
hl.add(cmh3);
}
}
}
return hl;
}











Jadi, ane tuh mo bikin list tree recursive yang ditampung ke dalam satu list,

nah, klo pake kodingan di atas, ane cuman bisa sampe level 2 doang, sedangkan

kalo dari DB nya itu, level nya bisa unlimited, misal:



Kategori level 0 ==> KatRoot

Kategori level 1 ==> KatChild1

Kategori level 2 ==> KatChild2



klo dirangkum, jadinya ==> KatRoot >> KatChild1 >> KatChild2



Nah, itu klo hanya sampe level dua, klo levelnya lebih dari itu, ada ide gan :D

bingung nih...., dan sepertinya kodingan ane pun bakal kurang efisien, karena

ada looping di dalam looping.....

beneran deh gan, dah pusing banget ane.... :D



tolong dibantu yaaa...... :loveindonesia :ceriwislove:

</div>