在地图内创建 List<Object>

Fro*_*zen 3 java-8

我有这样的字符串:

String input = "1 2 20\n"
        + "1 3 50\n"
        + "1 4 40\n"
        + "1 5 30\n"
        + "2 3 20\n"
        + "2 4 40\n"
        + "2 5 30\n"
        + "3 4 50\n"
        + "3 5 60\n"
        + "4 5 70\n";

  }
Run Code Online (Sandbox Code Playgroud)

我的节点类:

class Nodes{
Integer from;
Integer to;
Integer cost;
}
Run Code Online (Sandbox Code Playgroud)

对应于每个String input我想要一个 Nodes 对象。

到目前为止我已经能够这样做:

 List<Nodes> collect = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

for 循环从这里开始,直到输入耗尽。

    String[] s = Arrays.stream("1 3 50".split(" ")).toArray(String[]::new);
    Nodes nodes = new Nodes(Integer.valueOf(s[0]),Integer.valueOf(s[1]),Integer.valueOf(s[2]));
collect.add(nodes);
Run Code Online (Sandbox Code Playgroud)

for 循环在此 结束所需的输出:

List<Nodes>
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以让我只创建一个内部流List,然后最后使用它来收集它,这样我就有了。Nodesmap(h->new Nodes(h[0],h[1],h[2]))Collectors.toList()List<Nodes>

Had*_*i J 5

试试这个

List<Nodes> nodes = Arrays.stream(input.split("\\n"))
            .map(s->s.split("\\s"))
            .map(arr->new Nodes(Integer.valueOf(arr[0]),Integer.valueOf(arr[1]),
                                Integer.valueOf(arr[2])))
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)