關於工做中.net轉java遇到的一個遠程調用傳遞重複參的問題。

工做中遇到一個很奇怪的傳參問題。以前.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);
     }
}
相關文章
相關標籤/搜索