如何在 Java 中替换 MultiValueMap<String, List<?>> 中的值?

问题描述 投票:0回答:1

我正在使用 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”的值,使其成为一个列表而不是列表的列表?

java spring spring-data
1个回答
0
投票

如果你看

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/MultiValueMap.html

您可以看到,MultiValueMap (V) 的第二个泛型参数是父接口中 List 的泛型类型。

使用

MultiValueMap<String, List<?>> multimap
,您为地图的值类型定义的是列表的列表,因此您得到
[[a new string]]
,表示列表中的列表(任何?)。

无论如何,你应该发布完整的代码示例。

© www.soinside.com 2019 - 2024. All rights reserved.