Разделите строку на ,
, чтобы получить отдельные записи карты.Затем разделите их на =
, чтобы получить ключ и значение.
Map<String, String> reconstructedUtilMap = Arrays.stream(utilMapString.split(","))
.map(s -> s.split("="))
.collect(Collectors.toMap(s -> s[0], s -> s[1]));
Примечание: Как указано Andreas @ в комментариях , этоне надежный способ преобразования между картой и строкой
EDIT : спасибо Хольгеру за это предложение.
Используйте 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}