我有一张 map :

Map<String, String> utilMap = new HashMap();
utilMap.put("1","1");
utilMap.put("2","2");
utilMap.put("3","3");
utilMap.put("4","4");

我将其转换为字符串:
String utilMapString = utilMap
                .entrySet()
                .stream()
                .map(e -> e.toString()).collect(Collectors.joining(","));
Out put: 1=1,2=2,3=3,4=4,5=5

如何在Java8中将utilMapString转换为Map?谁可以帮助我?

最佳答案

,分割字符串以获取单个 map 条目。然后用=拆分它们,以获取键和值。

Map<String, String> reconstructedUtilMap = Arrays.stream(utilMapString.split(","))
            .map(s -> s.split("="))
            .collect(Collectors.toMap(s -> s[0], s -> s[1]));

注意:如Andreas@ in the comments所指出,这不是在映射和字符串之间转换的可靠方法

编辑:
感谢Holger的建议。

使用s.split("=", 2)来确保该数组永远不会大于两个元素。这对于不丢失内容很有用(当值具有=时)

示例:当输入字符串为"a=1,b=2,c=3=44=5555"
你会得到{a=1, b=2, c=3=44=5555}
较早(仅使用s.split("="))将给出{a=1, b=2, c=3}

10-04 10:23