京东质量社区 如何将 sql 的 group 语句转成 java (2)

Lucas for 京东 · February 27, 2017 · 717 hits

前言

之前有过一篇文章是将sql的group通过java进行内存分组并统计。
具体请查看这篇文章:https://testerhome.com/topics/7688

问题

  1. 上篇文章虽然解决了功能问题,但是效率上很差。
  2. 回顾那篇文章的策略可以发现,对每个set进行遍历,时间复杂度可以到达n的立方。
  3. 仅仅600条记录就要运行1分钟,简直要人崩溃。
  4. 那么有没有什么更好的策略呢?

策略

  1. 这次依然采用Hash算法。
  2. 取而代之的是用HashMap。
  3. 遍历原始输入的List。
  4. HashMap的key由List里的元素的各字段加上一个分隔符组成,如"key" + "@luoshangyu@" + "value" + "@luoshangyu@" + "remark";
  5. 通过将组合后的key输入的hashMap中,修改相应的value值。
  6. 比如key存在,则其value的值加1。
  7. 修改完后,运行效率明显提升;原来600条数据,运行约1分钟;修改后只需要1秒中即可。

代码

完!

Best Regards,
Lucas Luo

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up