我正在尝试使用Java 8 Streams来读取文件并通过应用特定规则添加行来映射。我的文件是这样的:
2
54 4 13 167 5 7
23 96 24 3
第一行显示我希望放入地图的大小和其他行。我做到了这一点,但问题是数字可变的数量。如何获得除第一个元素
之外的所有Stream []元素Map<Integer, String> kvs = stream
.skip(1)
.map(elem -> elem.split(" "))
.collect(Collectors.toMap(e -> Integer.parseInt(e[0]),
e -> e[1]+" "+e[2]));
答案 0 :(得分:2)
如果您只想将第一个空格后的所有内容用作地图值,则可以使用双参数split:
Map<Integer, String> kvs = stream
.skip(1)
.map(elem -> elem.split(" ", 2))
.collect(Collectors.toMap(e -> Integer.parseInt(e[0]), e -> e[1]));
参数2指示拆分不要生成两个以上的字段,因此即使字符串有更多空格,字符串的其余部分也会放入e[1]
。