gpt4 book ai didi

java - java中以树形结构显示ArrayList数据

转载 作者:行者123 更新时间:2023-12-01 22:41:38 25 4
gpt4 key购买 nike

我有一个包含以下值的 arrayList:

static ArrayList<DTONodeDetail> tree;
public static void main(String[] args) {
// TODO Auto-generated method stub
tree=new ArrayList<DTONodeDetail>();

//first argument->NodeId
//second->NodeName
// third -> ParentNodeId

tree.add(getDTO(1,"Root",0));
tree.add(getDTO(239,"Node-1",1));
tree.add(getDTO(242,"Node-2",239));
tree.add(getDTO(243,"Node-3",239));
tree.add(getDTO(244,"Node-4",242));
tree.add(getDTO(245,"Node-5",243));
displayTree(tree.get(0));

}

public static DTONodeDetail getDTO(int nodeId,String nodeName,int parentID)
{
DTONodeDetail dto=new DTONodeDetail();
dto.setNodeId(nodeId);
dto.setNodeDisplayName(nodeName);
dto.setParentID(parentID);

return dto;
}

现在我想使用简单的java代码以树结构显示以上数据,如下所示:

Root
-----Node-1
------------Node-2
------------------Node-4
------------Node-3
------------------Node-5

我尝试过以下操作,但无法获得想要的结果:

public static void displayTree(DTONodeDetail dto){

ArrayList<DTONodeDetail> childs = selectChild(dto.getNodeId());
System.out.println(dto.getNodeDisplayName());
for(DTONodeDetail obj:childs){

displayTree(obj);
}

}

public static ArrayList<DTOWorkSpaceNodeDetail> selectChild(int nodeID){
ArrayList<DTOWorkSpaceNodeDetail> list=new ArrayList<DTOWorkSpaceNodeDetail>();

for(int i=0;i<tree.size();i++)
{
if(tree.get(i).getParentID()==nodeID){

list.add(tree.get(i));

}
}
return list;

}

请提供一些指南或代码。

最佳答案

你应该这样做

static void displayTree(DTONodeDetail root ,int level){

System.out.print(prefix(level));
System.out.println(root.name);

ArrayList<DTONodeDetail> children = selectChild(dto.getNodeId());

for(DTONodeDetail child : children){
displayTree(child, level + 1);
}

}

前缀是构建足够的“----”的函数

static String prefix(int level){
StringBuilder s = new StringBuilder();
for(int i = 0; i < level; i++){
s.append("----");
}

return s.toString();
}

结果

displayTree(node1, 0);

Node-1
----Node-2
--------Node-4
----Node-3
--------Node-5

关于java - java中以树形结构显示ArrayList数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com