Java List去重以及效率分析
List去重无非几种方法: 下面文章提供的两种: 以及使用List.stream.distinct()。 文章中还提到了HashSet和linkHashSet,而且测试结果linkHashSet居然比hashSet还快,想了很久感觉linkedHashSet怎么可能快于hashSet, 另外网上也没有针对distinct方法的效率分析,遂自己写了个测试程序测试了下: 数据量1w,碰撞率1/10,hashset基本是1毫秒,linkedHashSet是1-2毫秒,distinct是60毫秒左右 数据量10w时,碰撞率1/10,hashset 23毫秒,linkedHashSet是39毫秒,distinct 68毫秒。 数据量100w时,碰撞率1/10,hashset 242毫秒,linkedHashSet 288毫秒,distinct 230毫秒左右。另外多次测试发现三者不相上下,有多次linkedhashSet快于hashSet 特意跑了一下: 发现当碰撞率比较高的时候,数据量大了后使用哪种方法效率都差不多。当碰撞率低的时候,hashset的效果就明显了。 一句话总结,如果单纯的只是对容器去个重的话,hashSet最快! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |