将字符串转换为哈希映射<字符串,字符串[]>



我有Java命令行应用程序,我在启动.jar文件时使用参数。Parameters看起来像

--exclude parent1=child1,child2;parent2=child3;parent3 

我想将参数转换为HashMap<String, String[]>,其中key=parent1和value=[child1,child2]

我尝试使用Streams和split()函数,但我无法将子字符串转换为字符串数组

Arrays.stream(gotData.split(";"))
.map(s -> s.split("="))
.collect(Collectors.toMap(s -> s[0], s -> s[1].split(",")));

为了解决你的问题,你必须每次检查你的数据,因为在收集部分,你试图将s[1]分割为不存在的parent3,为了避免这个问题,你可以在像这样检查数组的长度

Arrays.stream(gotData.split(";"))
.map(s -> s.split("="))
.collect(Collectors.toMap(s -> s[0], s -> {
// If there size of array great than 1 mean there are children.
if (s.length > 1) {
return s[1].split(",");
}
// Else just return an empty array.
return new String[0];
}));

如果有其他情况,可能需要在此代码中添加其他条件以避免任何类型的错误。


显示响应:

response.forEach((k, v) -> System.out.println(k + " - " + Arrays.toString(v)));

Otputs

parent1 - [child1, child2]
parent3  - []
parent2 - [child3]

最新更新