Map中的Ljava.lang.String

时间:2014-02-25 13:00:30

标签: java arrays 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;
}

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

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

我试图将值更改为

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

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

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

请帮帮我......

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

如评论中所述,

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

创建自己的类来保存值并实现toString方法,以便按照您想要的方式输出值。