工做中遇到一個很奇怪的傳參問題。以前.net使用的是一個List列表,列表中有幾個重複的參數。列表中使用的model類是KeyValue。java
我使用java模仿其寫法,傳遞List和KeyValue。對方提示參數格式不對。我使用java中的Map封裝參數。由於Map中的Key不能重複因此查詢到的信息只是所須要的信息中的一條。spa
.net示例代碼:(只是起到一個示意做用).net
public struct KeyValue<TK, TV> {public TK Key { get; } public TV Value { get; } }
參數示例:code
List<KeyValue<String, String>> pams = new List<KeyValue<String, String>>(); pams.Add(new KeyValue<String, String>("param1", param1)); pams.Add(new KeyValue<String, String>("param2", param2)); foreach (String param3 in Param3List.Split(new[] { ';' })){ pams.Add(new KeyValue<String, String>("param3", param3)); }
解決方法:blog
使用java中的 IdentityHashMap 該Map繼承了AbstractMap 實現了Map接口。繼承
最重要IdentityHashMap中的key比較使用等是地址比較 即便用了「==」進行比較。接口
示例代碼:get
IdentityHashMap<String, String> pams = new IdentityHashMap<>(); pams.put("param1", param1); pams.put("param2", param2); for(String param3: Param3List.split(";")) { if (StringUtils.isNotBlank(param3)){ pams.put(new String("param3"), param3); } }