我很困惑......
我有这种方法可以从视图中的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 []中的值与键相关联,这样我就可以通过它进行迭代。当它只是一个字符串时我无法迭代。我确信这是一个简单的问题,但我似乎无法弄明白。
请帮帮我......
答案 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方法,以便按照您想要的方式输出值。