映射中的Ljava.lang.String

映射中的Ljava.lang.String,java,arrays,map,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

我很困惑

我有一个方法,它可以从视图中的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;
}
然后显示fine:
{yAxis=[Choose,Choose]

但是我不能遍历这些值,因为它们都是字符串而不是列表。 我希望将值与键链接在字符串[]中,这样我就可以通过它进行迭代。当它只是一个字符串时,我无法进行迭代。我确信这是一个简单的问题,但我似乎无法解决它

请帮帮我…

不幸的是,所有数组的toString()都默认为Object提供的方法,即打印类的内部描述和“identity”哈希代码


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

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

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


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

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

如评论中所述

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

嗯,这有多复杂?
for(Map.Entry:Map.entrySet()){for(String s:Entry.getValue(){doSomething();}}
不要费心用注释来澄清你的问题。编辑你的问题,让它清楚。
for (String value: entry.getValue())
{ 
    System.out.println(value);
}