我正在使用 org.springframework.util.MultiValueMap。
作为参数,我传递了一个
MultiValueMap<String, List<?>> multimap
。我这里的示例不会利用每个键有多个值,但它在我的其他代码中使用,因此我必须将其保留为 MultiValueMap 而不是常规 Map。对于这个例子,我的多值映射看起来就像一个普通的映射:
{
"var1"=["to replace"],
"var2"=["hey"]
}
我想替换 var1 的列表。
我的代码如下所示:
String str = "a new string";
multimap.set("var1", Collections.singletonList(str));
System.out.println(multimap.get("var1");
System.out.println(multimap.get("var2");
因此获取并打印“var2”会返回我想要的效果,因为我从未替换过它,打印:
[hey]
但是立即获取“var1”,打印出以下内容:
[[a new string]]
这使得我使用此地图的任何其他代码都无法工作。我认为我现在正在做的事情是错误地用列表替换原始字符串值?但如果我只是这样做
multimap.set("var1", str);
它就不会运行。
如何在 MultiValueMap 中设置“var1”的值,使其成为一个列表而不是列表的列表?
如果你看
您可以看到,MultiValueMap (V) 的第二个泛型参数是父接口中 List 的泛型类型。
使用
MultiValueMap<String, List<?>> multimap
,您为地图的值类型定义的是列表的列表,因此您得到[[a new string]]
,表示列表中的列表(任何?)。
无论如何,你应该发布完整的代码示例。