Java 8 : How to convert String to Map<String, 字符串>?

标签 java lambda java-8 java-stream

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

最佳答案

, 拆分字符串以获得单独的映射条目。然后用=拆分得到key和value。

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}

关于Java 8 : How to convert String to Map<String, 字符串>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52695410/

相关文章:

java - 即使客户端未发送证书,SSL 套接字连接仍能正常工作?

java - 使用 postgresql 8.4 jdbc4 和 JBoss 5.1GA 调用 createArrayOf 时出现 AbstractMethodError

c++ - 使用带有状态的 Lambda 作为函数指针参数

java - 尝试使用 IntStream.range() 并获取 "This static method can only be accessed..."

java - 如何调试在 Java 7 下工作但在 Java 8 下不工作的东西

java - 如何从javax.json.JsonArray中删除元素?

java - 从 Hibernate hbm.xml 转换为注解

python - 使用 Pandas 的赋值和 Lambda 函数向每行添加 Rand

c# - 在事件处理程序上使用 lambda exp 时如何等待多个任务

.map 返回的 Java-8 Stream 是并行的还是顺序的?