Java 将字符串转换为HashMap
我有一个Java命令行应用程序,在启动.jar文件时使用参数。 参数看起来像Java 将字符串转换为HashMap,java,string,java-8,java-stream,Java,String,Java 8,Java Stream,我有一个Java命令行应用程序,在启动.jar文件时使用参数。 参数看起来像 --exclude parent1=child1,child2;parent2=child3;parent3 我想将参数转换为HashMap,其中key=parent1,value=[child1,child2] 我尝试使用Streams和split函数,但无法将子字符串转换为字符串数组 Arrays.stream(gotData.split(";")) .map(s -
--exclude parent1=child1,child2;parent2=child3;parent3
我想将参数转换为HashMap,其中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(",")));
要解决此问题,您必须每次检查数据,因为在“收集”部分中,您尝试为不存在的parent3拆分s[1],为了避免此问题,您可以先检查数组的长度,然后再执行类似操作
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)));
奥普茨
要解决此问题,您必须每次检查数据,因为在“收集”部分中,您尝试为不存在的parent3拆分s[1],为了避免此问题,您可以先检查数组的长度,然后再执行类似操作
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)));
奥普茨
可能相关的:可能相关的:我很好!你呢我很好!你呢