我可以将Map <string,list <integer =“” >>转换为MultiValueMap <string,integer =“”>

时间:2019-02-16 06:37:36

标签: java spring

我正在尝试将地图转换为多值地图,但出现以下编译异常:

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 

}

}

有什么简单的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您不关心使用哪种MultiValueMap类型,最简单的方法是使用LinkedMultiValueMap的{​​{3}},它需要一个Map<K, List<V>> < / p>

示例中的一个问题是,您试图给原始映射和MultiValueMap赋予相同的变量名。因此,如果您改为执行以下操作:

MultiValueMap<String, String> TradersTradeMVMap = new LinkedMultiValueMap<>(TradersTradeMap);

答案 1 :(得分:1)

是的,Spring提供了CollectionUtils.toMultiValueMap()形式的便捷包装器,该包装器保留了所使用的原始Map