我有这样的字符串:
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>
试试这个
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)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |