Jee*_*ppp 1 java list java-8 java-stream
我有以下清单
[12_223,13_4356,15_5676]
我能够使用以下代码溢出下划线并将其转换为一个Hashmap
list.stream()
.map(s -> s.split("_"))
.collect(Collectors.toMap(
a -> a[0],
a -> a[1]));
Run Code Online (Sandbox Code Playgroud)
它给出了下面的地图
{"12"="223", "13"="4356", "15"="5676"}
但我想更改此代码,以便它给我一个像下面的地图列表,因为我可能会在分割时遇到重复的键
[{"12"="223"}, {"13"="4356"}, {"15"="5676"}]
如果你真的希望结果是一个地图列表,我会这样做:
List<Map<String, String>> listOfMaps(List<String> list) {
return list.stream()
.map(s -> s.split("_", 2))
.map(a -> Collections.singletonMap(a[0], a[1]))
.collect(toList());
}
Run Code Online (Sandbox Code Playgroud)
(HT:Eugene推荐split("_", 2)
.)
在Java 9中,您可以这样做:
List<Map<String, String>> listOfMaps(List<String> list) {
return list.stream()
.map(s -> s.split("_", 2))
.map(a -> Map.of(a[0], a[1]))
.collect(toList());
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,结果列表中的映射实例都是不可修改的.
归档时间: |
|
查看次数: |
1185 次 |
最近记录: |