我有以下清单 [12_223,13_4356,15_5676]
我能够在下划线上加起来,并使用以下代码将其转换为一个Hashmap
list.stream()
.map(s -> s.split("_"))
.collect(Collectors.toMap(
a -> a[0],
a -> a[1]));
它给出了下面的地图 {"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());
}
(HT:尤金推荐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());
}
在这两种情况下,结果列表中的地图实例都是不可修改的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句