Java 8:如何将 String 转换为 Map<String,String>?

我有一张地图:


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?谁能帮帮我?


开满天机
浏览 1393回答 3
3回答

米琪卡哇伊

拆分字符串,以获取单个地图条目。然后将它们拆分=以获取键和值。Map<String,&nbsp;String>&nbsp;reconstructedUtilMap&nbsp;=&nbsp;Arrays.stream(utilMapString.split(",")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(s&nbsp;->&nbsp;s.split("=")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(s&nbsp;->&nbsp;s[0],&nbsp;s&nbsp;->&nbsp;s[1]));注意:正如Andreas@ 在评论中指出的那样,这不是在地图和字符串之间进行转换的可靠方法编辑:感谢 Holger 的这个建议。使用s.split("=", 2)以确保阵列从来没有超过两个元素大。这对于不丢失内容很有用(当值有时=)示例:当输入字符串为时,"a=1,b=2,c=3=44=5555"&nbsp;您将得到{a=1, b=2, c=3=44=5555}早些时候(只是使用s.split("="))会给&nbsp;{a=1, b=2, c=3}

守着一只汪

这是另一个选项,它将等项列表流式传输1=1到地图中。String input = "1=1,2=2,3=3,4=4,5=5";Map<String, String> map = Arrays.asList(input.split(",")).stream().collect(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Collectors.toMap(x -> x.replaceAll("=\\d+$", ""),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;x -> x.replaceAll("^\\d+=", "")));System.out.println(Collections.singletonList(map));[{1=1, 2=2, 3=3, 4=4, 5=5}]

弑天下

如果您想从 String 生成地图,您可以使用以下方式:Map<String,&nbsp;String>&nbsp;newMap&nbsp;=&nbsp;Stream.of(utilMapString.split("\\,")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(t&nbsp;->&nbsp;t.toString().split("=")[0],&nbsp;t&nbsp;->&nbsp;t.toString().split("=")[1]));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java