JavaAIjava算法
慎用 ArrayList 的 contains 方法,优先使用 HashSet
在排查应用启动缓慢时,真正的瓶颈并不在数据库读取,而是在去重逻辑中反复调用 ArrayList.contains()。由于该方法底层是线性遍历,6 万条数据在高频查找下会产生明显性能开销。将用于判断重复的容器改为 HashSet 后,查找复杂度大幅下降,去重耗时从数分钟缩短到约 1 秒,适合用 Set 替代 List 处理高频存在性判断。
发布于 2015/10/2043 浏览0 点赞
博客作者
BUG终结者
341
已发布文章
6.3K
博客获赞
380K
博客浏览
第 18 页
在排查应用启动缓慢时,真正的瓶颈并不在数据库读取,而是在去重逻辑中反复调用 ArrayList.contains()。由于该方法底层是线性遍历,6 万条数据在高频查找下会产生明显性能开销。将用于判断重复的容器改为 HashSet 后,查找复杂度大幅下降,去重耗时从数分钟缩短到约 1 秒,适合用 Set 替代 List 处理高频存在性判断。