【问题标题】:Convert String to HashMap<String,String[]> [duplicate]将字符串转换为 HashMap<String,String[]> [重复]
【发布时间】:2021-04-21 22:39:13
【问题描述】:

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

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

我想将参数转换为 HashMap&lt;String, String[]&gt; 其中 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(",")));

【问题讨论】:

标签: java string java-8 java-stream


【解决方案1】:

要解决您的问题,您必须每次检查数据,因为在收集部分您尝试将 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)));

输出

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

【讨论】:

  • 我很好!和你 ? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多