【Java编程系列】使用List集合对百万数据量高效快速过滤去重筛选

热门系列:


1.序言

前段时间,接到一个需求。需要将微信公众号的粉丝批量分组。当时需要分组的粉丝用户量达到250W左右,但通过和我们的业务数据库中筛选出来的不合格用户粉丝,需要从250W粉丝中过滤去重。不合格的粉丝数有80W条左右,也就是最终需要筛选出需要分组的粉丝数为170W左右。如此一下,两个大数据集合对比筛选就需要考虑效率问题了!


2.过程

①一开始尝试了一下双重for循环大法,那结果,酸爽无比。程序直接把CPU喂饱了。。。。如此肯定是不可取的。

②使用Iterator迭代器,通过单循,并使用list的contains方法,来筛选。代码如下:

Iterator fensiIterator = fensiList.iterator();
String temp = null;
while (fensiIterator.hasNext()){
	temp = fensiIterator.next().toString();
	if(openIds.contains(temp)){
		fensiIterator.remove();
	}
}

效率也很差,但比第一种稍微好一丢丢

③加强版来啦(推荐)!!!!先上代码:

//250W数据list集合转换成set集合
HashSet fensiSet = new HashSet(fensiList);
//80W从数据库筛选出来不合符条件,需要过滤掉的用户list集合
HashSet removeSet = new HashSet(openIds);
//去重操作
fensiSet.removeAll(removeSet);
//清空原有list,并装入过滤后的数据set集合
fensiList.clear();
fensiList.addAll(fensiSet);

已经加上了注释,大家应该可以一目了然吧!

咱们来分析一下,为啥set如此之快!查贴发现,原来set的HashSet.contains()方法,底层是通过HashMap来实现的。而HashMap的查找速度是很快的。虽然list也有removeAll()方法,但是与set的removeAll()方法相比,底层实现不同,也导致效率差异明显。

 

本博客皆为学习、分享、探讨为本,欢迎各位朋友评论、点赞、收藏、关注,一起加油!

 

善良勤劳勇敢而又聪明的老杨 CSDN认证博客专家 Java
一个喜欢学习,热爱分享的Java技术人!The more you know, the more you don't know!
微信搜索关注时代名猿,免费领取VIP精品学习视频、BAT大厂面试资料、IT技术电子书籍
已标记关键词 清除标记
【课程内容】<br /> 所涉及的具体内容包括输入录入技巧、排序、筛选、函数公式、数据透视表、图表、汇总等功能应用,并结合大量的企业应用实例,以互动的方式将解决思路和操作过程逐一呈现。<br /><br /> 【课程特点】<br /> 1、190节大容量课程:包含了Excel软件的大部分知识点;<br /> 2、创新的教学模式:手把手教您电子表格,一看就懂,一学就会;<br /> 3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;<br /> 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;<br /> 5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;<br /><br /><br /> 【互动教程的特点】<br /> •互动性<br /> -首创互动式学习,不同于以往的任何一种学习方式,不看视频不看书,轻松,高效,好玩<br /> -手把手教学,一步步引导操作,实时看到效果,就像自己在操作一样,信心满满<br /> -即点即学,课程内可根据自己的需要,随时调整界面上方进度条,复操作,加强记忆<br /> -强大的学习跟踪系统,对整体学习进度一目了然,及时调整学习计划,查疑补漏<br /><br /> •人性化<br /> -界面设计简洁,操作简单,没有繁琐的按钮,一点就可直接进入学习状态<br /> -贴心小提示,读懂你的小心思,零基础快速入门,学习无压力,不尴尬<br /> -超多原理解析,疑问解答,如同专业Excel导师亲身指导,不翻书快速记忆,Excel小白迅速成长<br /><br /> •实用性<br /> -课程由浅入深,操作过程详细剖析,一步步模仿,马上就会做。<br /> -涉及排序、筛选、函数公式、数据透视表、图表、汇总等核心功能的课程编排,通俗易懂不头疼<br /> -互动+观看视频,两种学习方式切换,上班路上,地铁里享受随时随地自由学习<br /><br /> 通过本课程的学习,您将逐步掌握Excel 2016的各项功能和使用技巧。从而提高您的办公效率,早做完,不加班!!!<br /><br />
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页