我有以下清单
[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: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());
}


在这两种情况下,结果列表中的地图实例都是不可修改的。

关于java - 将字符串列表拆分为 map 列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49057245/

10-12 00:16
查看更多