Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Data structures 通过集合框架展平多级链表_Data Structures_Java 8_Java Stream - Fatal编程技术网

Data structures 通过集合框架展平多级链表

Data structures 通过集合框架展平多级链表,data-structures,java-8,java-stream,Data Structures,Java 8,Java Stream,以这个例子为例 在java中,我能够通过集合展平多级链表,但无法在给定节点及其子节点和下一个节点之间建立关系。在当前示例中,10具有值为4、20和13的子节点。我想以更好的方式使用Collections框架,可以指定子节点和下一个节点,然后对给定的输入应用展平操作。请帮帮我 List<List<Integer>> obj =new LinkedList<List<Integer>>(); obj.add(Arrays.asList(

以这个例子为例

在java中,我能够通过集合展平多级链表,但无法在给定节点及其子节点和下一个节点之间建立关系。在当前示例中,10具有值为4、20和13的子节点。我想以更好的方式使用Collections框架,可以指定子节点和下一个节点,然后对给定的输入应用展平操作。请帮帮我

    List<List<Integer>> obj =new LinkedList<List<Integer>>();
    obj.add(Arrays.asList(10,5,12,7,11));
    obj.add(Arrays.asList(4,20,13,17,6));
    obj.add(Arrays.asList(2,16,9,8));
    obj.add(Arrays.asList(3,19,15));

    obj.stream().flatMap(e->e.stream()).forEach(i->System.out.print(i+" "));;
List obj=new LinkedList();
对象添加(Arrays.asList(10,5,12,7,11));
对象添加(Arrays.asList(4,20,13,17,6));
对象add(Arrays.asList(2,16,9,8));
obj.add(Arrays.asList(3,19,15));
obj.stream().flatMap(e->e.stream()).forEach(i->System.out.print(i+);;

我解决了问题,这里是代码

 import java.util.*;
import java.lang.*;
import java.io.*;

class Node {
    int data;
    List<Node> child;

    public Node(int data, List<Node> child) {
        this.data = data;
        this.child = child;
    }

    @Override
    public String toString() {
        return data+" ";
    }
}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
            List<Node> obj1 = new LinkedList<Node>();

        obj1.add(new Node(10, Arrays.asList(new Node(4,null),new Node(20,Arrays.asList(new Node(2, null))),
                new Node(13,Arrays.asList(new Node(16, Arrays.asList(new Node(3, null)))))  )));
        obj1.add(new Node(5, null));
        obj1.add(new Node(12,null));
        obj1.add(new Node(7,Arrays.asList(new Node(17, Arrays.asList(new Node(9, Arrays.asList(new Node(19, null),
                new Node(15, null))),new Node(8, null))
                ),new Node(6, null))
                ));
        obj1.add(new Node(11,null));

        int tail=obj1.size();

        for(int i=0;i<tail;i++)
        {
            Node n=obj1.get(i);
            if(n.child!=null)
            {
                for(Node o:n.child)
                {
                    obj1.add(tail, o);
                    tail++;
                }
                n.child=null;
            }
        }

        System.out.println(obj1);

    }
}
import java.util.*;
导入java.lang.*;
导入java.io.*;
类节点{
int数据;
列出儿童;
公共节点(int数据,列表子节点){
这个数据=数据;
这个孩子=孩子;
}
@凌驾
公共字符串toString(){
返回数据+“”;
}
}
/*只有当类是公共的时,类的名称才必须是“Main”*/
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
List obj1=新链接列表();
obj1.add(新节点(10,Arrays.asList)(新节点(4,null),新节点(20,Arrays.asList)(新节点(2,null)),
新节点(13,Arrays.asList)(新节点(16,Arrays.asList)(新节点(3,null‘‘‘‘‘))));
obj1.add(新节点(5,空));
obj1.add(新节点(12,空));
obj1.add(新节点7,Arrays.asList)(新节点17,Arrays.asList)(新节点9,Arrays.asList)(新节点19,null),
新节点(15,null)),新节点(8,null))
),新节点(6,空))
));
obj1.add(新节点(11,空));
int tail=obj1.size();

对于(inti=0;i我解决了这个问题,这里是代码

 import java.util.*;
import java.lang.*;
import java.io.*;

class Node {
    int data;
    List<Node> child;

    public Node(int data, List<Node> child) {
        this.data = data;
        this.child = child;
    }

    @Override
    public String toString() {
        return data+" ";
    }
}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
            List<Node> obj1 = new LinkedList<Node>();

        obj1.add(new Node(10, Arrays.asList(new Node(4,null),new Node(20,Arrays.asList(new Node(2, null))),
                new Node(13,Arrays.asList(new Node(16, Arrays.asList(new Node(3, null)))))  )));
        obj1.add(new Node(5, null));
        obj1.add(new Node(12,null));
        obj1.add(new Node(7,Arrays.asList(new Node(17, Arrays.asList(new Node(9, Arrays.asList(new Node(19, null),
                new Node(15, null))),new Node(8, null))
                ),new Node(6, null))
                ));
        obj1.add(new Node(11,null));

        int tail=obj1.size();

        for(int i=0;i<tail;i++)
        {
            Node n=obj1.get(i);
            if(n.child!=null)
            {
                for(Node o:n.child)
                {
                    obj1.add(tail, o);
                    tail++;
                }
                n.child=null;
            }
        }

        System.out.println(obj1);

    }
}
import java.util.*;
导入java.lang.*;
导入java.io.*;
类节点{
int数据;
列出儿童;
公共节点(int数据,列表子节点){
这个数据=数据;
这个孩子=孩子;
}
@凌驾
公共字符串toString(){
返回数据+“”;
}
}
/*只有当类是公共的时,类的名称才必须是“Main”*/
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
List obj1=新链接列表();
obj1.add(新节点(10,Arrays.asList)(新节点(4,null),新节点(20,Arrays.asList)(新节点(2,null)),
新节点(13,Arrays.asList)(新节点(16,Arrays.asList)(新节点(3,null‘‘‘‘‘))));
obj1.add(新节点(5,空));
obj1.add(新节点(12,空));
obj1.add(新节点7,Arrays.asList)(新节点17,Arrays.asList)(新节点9,Arrays.asList)(新节点19,null),
新节点(15,null)),新节点(8,null))
),新节点(6,空))
));
obj1.add(新节点(11,空));
int tail=obj1.size();

对于(int i=0;iI获得了输出,但我对存储节点的方式不满意。例如,我无法指定给定节点的子节点。正如链接的页面所示,您需要为节点创建一个类。您正在反向执行任务。您不希望展平数据结构,而是希望从一个列表。这是不可能的。使用
LinkedList
与该链接页面的“多级链接列表”没有任何关系。您的代码与没有语义差异,例如
list obj=Arrays.asList(Arrays.asList(10,5,12,7,11),Arrays.asList(4,20,13,17,6),Arrays.asList(2,16,9,8),Arrays.asList(3,19,15));
@Federico Peralta Schaffner我现在创建了一个类,有人能帮我修改列表吗?我得到了输出,但我对存储节点的方式不满意。例如,我无法指定给定节点的子节点。您需要为节点创建一个类,如您链接的页面中所示。您正在反转任务。您不希望扁平化数据结构,而是希望从列表列表中创建结构。这是不可能的。使用
LinkedList
与该链接页面的“多级链接列表”无关。您的代码与没有语义差异,例如
list obj=Arrays.asList(Arrays.asList(10,5,12,7,11),Arrays.asList(4,20,13,17,6),Arrays.asList(2,16,9,8),Arrays.asList(3,19,15));
@Federico Peralta Schaffner我现在创建了一个类,有人能帮我修改列表吗