我正在尝试将地图转换为多值地图,但出现以下编译异常:
Wrong 1st argument type. Found: java.util.Map<java.lang.String,java.util.List<java.lang.String>>, required: org.springframework.util.MultiValueMap<java.lang.String,java.lang.String> less... Inspection info:
这里是结构:
Map<String, List<String>> tradersTradeMap
-> MultiValueMap<String, String>tradersTradeMap
class Trade {
public String getTraderNameAfterProcesing (MultiValueMap<String, String>
tradersTradeMap){
..... // SOme code goes here
}
}
class Customer {
private Trade trade;
public String Method1(){
Map<String, List<String>> traderTradeMap = new HashMap<>();
traderTradeMap.put("TraderA", Arrays.asList("SPOT","BLOCK","FORWARD"));
traderTradeMap.put("TraderB", Arrays.asList("SPOT","BLOCK"));
trade = new Trade();
trade.getTraderNameAfterProcesing(traderTradeMap); // This line is giving exception
}
}
有什么简单的方法吗?
答案 0 :(得分:1)
如果您不关心使用哪种MultiValueMap
类型,最简单的方法是使用LinkedMultiValueMap
的{{3}},它需要一个Map<K, List<V>>
< / p>
示例中的一个问题是,您试图给原始映射和MultiValueMap
赋予相同的变量名。因此,如果您改为执行以下操作:
MultiValueMap<String, String> TradersTradeMVMap = new LinkedMultiValueMap<>(TradersTradeMap);
答案 1 :(得分:1)
是的,Spring提供了CollectionUtils.toMultiValueMap()
形式的便捷包装器,该包装器保留了所使用的原始Map
。