Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(数据结构)Java LinkedList对象到树_Java_Jsp_Recursion_Tree_Linked List - Fatal编程技术网

(数据结构)Java LinkedList对象到树

(数据结构)Java LinkedList对象到树,java,jsp,recursion,tree,linked-list,Java,Jsp,Recursion,Tree,Linked List,我有一个这样的a级: class A { Long id; String name; Long parentId; // refers to another A object's id } 现在我得到了一个对象列表,我想把它们都放在一个数据结构中,比如PC中的“文件夹树”,然后使用JSP在GUI上查看该树,但我不知道如何实现这一点。因此,您能否就这两个问题提供帮助: 1.如何从给定的对象列表中构建“文件夹树”?是否有任何可用的API支持此功能? 2.我们如何在不使用

我有一个这样的a级:

class A {
    Long id;
    String name;
    Long parentId; // refers to another A object's id
}  
现在我得到了一个对象列表,我想把它们都放在一个数据结构中,比如PC中的“文件夹树”,然后使用JSP在GUI上查看该树,但我不知道如何实现这一点。因此,您能否就这两个问题提供帮助:
1.如何从给定的对象列表中构建“文件夹树”?是否有任何可用的API支持此功能?
2.我们如何在不使用递归的情况下浏览整个数据树并将其作为文件夹树在JSP上查看?(我的意思是显示它们的最佳方式是什么)

非常感谢。

根据您的评论,我假设您可以将
A
类更改为如下所示:

class A {
    Long id;
    String name;
    Long parentId; // refers to another A object's id
    List<A> childrenNodes = new ArrayList();
}
A类{
长id;
字符串名;
Long parentId;//引用另一个对象的id
List childrenNodes=new ArrayList();
}
现在,假设您有一个包含所有数据的
列表lstData
,并且希望将其转换为树,则可以使用以下代码/算法:

public List<A> convertIntoTree(List<A> lstData) {
    for(A parentA : lstData) {
        //setting the children nodes for parentA
        for(A childA : lstData) {
            if (childA.getParentId() == parentA.getId()) {
                parentA.getChildrenNodes().add(childA);
            }
        }
    }
    //the main tree
    List<A> lstParents = new ArrayList<A>();
    //filling the tree
    for(A parentA : lstData) {
        //change this for your check if parent function or another rule
        if (parentA.getParentId() == 0) {
            lstParents.add(parentA);
        }
    }
    return lstParents;
}
公共列表转换树(列表数据){
对于(父对象A:lstData){
//为parentA设置子节点
对于(儿童A:lstData){
if(childA.getParentId()==parentA.getId()){
parentA.getChildrenNodes().add(childA);
}
}
}
//主树
List=new ArrayList();
//填满树
对于(父对象A:lstData){
//更改此项以检查是否存在父函数或其他规则
if(parentA.getParentId()==0){
lstParents.add(parentA);
}
}
回报父母;
}

您有两个属性:
Long id
Long parentId
将每个节点与其父节点相关联。你试图解决这个问题的方法是什么?如果你没有任何想法,请拿一支铅笔和一张纸思考一些事情(因为这看起来像是一个家庭作业)。那么你的意思是
a
的对象包含对其他
a
对象的引用?@nishantshresh:是的,它包含其父对象的id,不是父母object@LuiggiMendoza当前位置这个问题背后有太多的东西,但我试图在上面的问题上简化它;现在我一直在寻找保存数据的数据结构以及在GUI上显示数据的方法(使用JSP),如果这是您真正的问题,那么您可以(根据您的设计)使用
将childrenNodes
列为
类的属性。如果不能进行此修改,请创建一个包含
节点的包装器类;列出子节点