我想拆分以下字符串并将其存储到Map中。
String = "key_a:<value_a1>\r\n\r\nkey_b:<value_b1>\r\n\r\nkey_c:<value_c1, value_c2, value_c3>"
字符串可以在对之间有换行符。一个键可以有多个由 ,
从一个 <
以一个 >
.
现在这个字符串需要转换为 Map<String, List<String>>
.
Map的结构应如下所示:
key_a={value_a1},
key_b={value_b1},
key_c={value_c1, value_c2, value_c3}
我目前只有将不同的键值对彼此分开的逻辑,但我不知道如何实现将值彼此分开、移除括号和Map属性的逻辑。
String strBody = "key_a:<value_a1>\r\n\r\nkey_b:<value_b1>\r\n\r\nkey_c:<value_c1, value_c2, value_c3>"
Map<String, List<String>> map = Pattern.compile("\\r?\\n")
.splitAsStream(strBody)
.map(s -> s.split(":"))
//...logic for splitting values apart from each other, removing <> brackets and storing it in the map
)
4条答案
按热度按时间4dbbbstv1#
您的输入有两个
\r\n
要分离条目,还需要将其拆分,否则将得到空条目,然后需要过滤掉。在流中处理字符串之前,我会从字符串中移除尖括号。只剩下收集的步骤了。
y1aodyip2#
另一种方法也可以拆分值列表:
bnlyeluc3#
试试这个。
输出
rsl1atfo4#
您可以筛选具有两个值的数组,然后使用collectors.groupingby将元素分组到
Map
,你可以在这里找到更多关于groupingBy
和`mapping