java list转树形

来源:互联网 发布:win7网吧系统优化 编辑:程序博客网 时间:2024/06/06 12:44
//树形实体public class ExtTreeEntity {private String id;private String parentId;//父节点private String text;//树形显示的文本private boolean leaf;//是否叶子节点private List<ExtTreeEntity> children;        //TOTO getter/setter}
List<Entity> list = getAllEntity();//从数据库查询所有数据ExtTreeEntity treeObj = new ExtTreeEntity();treeObj.setId("0");treeObj.setParentId("-1");treeObj.setText("根节点");List<ExtTreeEntity> extTreeEntitys = new ArrayList<ExtTreeEntity>();ExtTreeEntity obj = new ExtTreeEntity();for (Entity entity: list) {if (entity.getPid() == 0) {obj = new ExtTreeEntity();obj.setId(entity.getId() + "");obj.setParentId(entity.getPid() + "");obj.setText(entity.getName());extTreeEntitys.add(obj);}}treeObj.setChildren(extTreeEntitys);treeObj = recursiveTree(list,treeObj);
public ExtTreeEntity recursiveTree(List<Entity> list,ExtTreeEntity treeObj) {for (ExtTreeEntity extTreeEntity : treeObj.getChildren()) {String id = extTreeEntity.getId();List<ExtTreeEntity> children = new ArrayList<ExtTreeEntity>();for (Entity entity : list) {String parentId = entity.getPid() + "";if (id.equals(parentId)) {ExtTreeEntity obj = new ExtTreeEntity();obj.setId(entity.getId() + "");obj.setParentId(entity.getPid() + "");obj.setText(entity.getName()); obj.setLeaf(false);children.add(obj);}}extTreeEntity.setChildren(children);if (extTreeEntity.getChildren().size()==0) {extTreeEntity.setLeaf(true);//叶子节点}recursiveTree(list,extTreeEntity);}return treeObj;}



0 0