工作中遇到一个很奇怪的传参问题。之前.net使用的是一个List列表,列表中有几个重复的参数。列表中使用的model类是KeyValue。

我使用java模仿其写法,传递List和KeyValue。对方提示参数格式不对。我使用java中的Map封装参数。因为Map中的Key不能重复所以查询到的信息只是所需要的信息中的一条。

.net示例代码:(只是起到一个示意作用)

    public struct KeyValue<TK, TV>
{public TK Key { get; }
public TV Value { get; }
}

参数示例:

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));
}

解决方法:

使用java中的 IdentityHashMap 该Map继承了AbstractMap 实现了Map接口。

最重要IdentityHashMap中的key比较使用等是地址比较 即使用了“==”进行比较。

示例代码:

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);
}
}

最新文章

  1. 异常处理try-catch-finally
  2. angularjs入门基础一
  3. TI BLE协议栈软件框架分析
  4. Java注释Override、Deprecated、SuppressWarnings详解
  5. javascript操作class和style样式
  6. UVa 575 Skew Binary 歪斜二进制
  7. VC提交网页表单(一共八篇)
  8. Java设计模式(三)-修饰模式
  9. 解析JSON、扩展Fiddler
  10. 浅谈Linux集群
  11. children 和childNodes 的区别
  12. windows平台把UliPad添加到右键菜单
  13. JS数组添加删除
  14. SpringBoot+MyBatis+MySQL读写分离
  15. 1.django项目的创建(在CMD中)
  16. 什么是CSR以及CSR的作用和生成
  17. spring cloud 路由网关zuul的高可用
  18. 一道另类的区间dp题 -- P3147 [USACO16OPEN]262144
  19. python 文件目录遍历
  20. iOS 中长按手势回调会被触发过两次

热门文章

  1. Note_4.7
  2. SpringBoot 配置Druid:不显示SQL监控 —(*) property for user to setup
  3. 第十一周助教工作总结——NWNU李泓毅
  4. windows下CEF3的关闭流程《转》
  5. Windows环境下的安装gcc(c语言环境)
  6. Cent0S 6.7直接在/etc/resolv.conf文件下修改DNS地址重启不生效问题【转】
  7. socat管理haproxy配置 ssh-keygen -N &#39;&#39; -t rsa -q -b 2048
  8. Springmvc request response log
  9. Leetcode: Longest Common Subsequence
  10. Netty服务器连接池管理设计思路