为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2021-11-03 16:54:42
我有一张地图: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?谁能帮帮我?
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

拆分字符串,以获取单个地图条目。然后将它们拆分=以获取键和值。

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

注意:正如Andreas@ 在评论中指出的那样,这不是在地图和字符串之间进行转换的可靠方法

编辑:感谢 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}


查看完整回答
反对 回复 2021-11-03
?
守着一只汪

TA贡献1872条经验 获得超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(

             Collectors.toMap(x -> x.replaceAll("=\\d+$", ""),

                 x -> x.replaceAll("^\\d+=", "")));

System.out.println(Collections.singletonList(map));


[{1=1, 2=2, 3=3, 4=4, 5=5}]


查看完整回答
反对 回复 2021-11-03
?
弑天下

TA贡献1818条经验 获得超8个赞

如果您想从 String 生成地图,您可以使用以下方式:

Map<String, String> newMap = Stream.of(utilMapString.split("\\,"))
            .collect(Collectors.toMap(t -> t.toString().split("=")[0], t -> t.toString().split("=")[1]));



查看完整回答
反对 回复 2021-11-03
  • 3 回答
  • 0 关注
  • 1392 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信