繁体   English   中英

Map中的Ljava.lang.String

[英]Ljava.lang.String in Map

我很困惑......

我有这个方法,可以从视图中的URL中获取参数:

    public static Map<String, String[]> getParameters() {
    final Set<Map.Entry<String,String[]>> entries = request().queryString().entrySet();
    Map <String, String[]> parameters = new HashMap <String, String[]>();

    for (Map.Entry<String,String[]> entry : entries) {
        final String key = entry.getKey();
        String[] value = entry.getValue();
        parameters.put(key, value);
    }

    System.out.println(parameters);
    return parameters;
}

当我打印参数时,这是我通常得到的:

{Y轴= [Ljava.lang.String; @ 4ddf465,

我试图改变价值

String value = Arrays.toString(entry.getValue());

然后它显示正常: {yAxis=[Choose, Choose]

但我不能通过值,因为它们都是字符串而不是列表。 我希望将String []中的值与键相关联,这样我就可以通过它进行迭代。 当它只是一个字符串时我无法迭代。 我确信这是一个简单的问题,但我似乎无法弄明白。

请帮我...

不幸的是,所有数组的toString()都默认为Object提供的方法,它打印了类的内部描述和“identity”hashCode。

如果您的目录结构中有String[] ,则必须自己执行toString,默认情况下不会执行您想要/期望的操作。 解决此问题的一种方法是使用List<String>例如ArrayList<String> ,它将按预期打印。

它是一个字符串数组,而不仅仅是一个字符串。 您可以遍历数组并获取映射到键的(多个)字符串值。

如评论中所述,

for (String value: entry.getValue())
{ 
    System.out.println(value);
}

如果要更改toString()以反映字符串表示的自己的实现,则必须编写包含数据的自己的对象并覆盖toString()

问题来自字符串数组上的toString方法的默认实现。 那是[Ljav.lang.String; @ 44df465来自的地方。

创建自己的类来保存值并实现toString方法以按您希望的方式输出值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM