【问题标题】:Java 8: Converting Map<String, List<String>> to Map<String, String[]> [duplicate]Java 8:将 Map<String, List<String>> 转换为 Map<String, String[]> [重复]
【发布时间】:2020-03-17 10:33:27
【问题描述】:
Map<String, List<String>> parameters;

Map<String, String[]> collect = parameters.entrySet().stream()
                .collect(Collectors.toMap(entry-> entry.getKey(),entry -> entry.getValue().toArray()));

我收到编译器错误无法解析方法“getKey()”

【问题讨论】:

    标签: java java-8 casting hashmap java-stream


    【解决方案1】:

    您应该创建一个正确类型的数组(即 String[] 而不是 Object[]):

    Map<String, String[]> collect = 
        parameters.entrySet()
                  .stream()
                  .collect(Collectors.toMap(Map.Entry::getKey,
                                            entry -> entry.getValue().toArray(new String[0])));
    

    【讨论】:

      【解决方案2】:

      你必须使用:

      .toArray(String[]::new)
      

      而不仅仅是:

      .toArray()
      

      因为这个返回 Object[] 而不是 String[]

      正如 cmets 中所讨论的,我的解决方案可以从 Java11 开始有效

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-06
        • 2016-07-21
        • 1970-01-01
        • 2021-04-25
        • 2023-03-26
        • 1970-01-01
        相关资源
        最近更新 更多