实例|如何从两个List中筛选出相同的值
来源:互联网 发布:域名绑定 编辑:程序博客网 时间:2024/05/17 08:18
IT优就业 2017-09-29 16:26
如何从两个List中筛选出相同的值
假设现有社保卡和身份证若干,想要匹配筛选出一一对应的社保卡和身份证。
转换为List<社保卡> socialList,和List idList,从二者中找出匹配的社保卡。
模型
创建社保卡类:
创建身份证类:
最简单的办法:遍历
只要做两轮循环即可。
准备初始化数据:
遍历
很容易看出,时间复杂度O(m,n)=m*n.
采用Hash
通过观察发现,两个list取相同的部分时,每次都遍历两个list。那么,可以把判断条件放入Hash中,判断hash是否存在来代替遍历查找。
如此,假设hash算法特别好,hash的时间复杂度为O(n)=n。如此推出这种做法的时间复杂度为O(m,n)=2m+n. 当然,更重要的是这种写法更让人喜欢,天然不喜欢嵌套的判断,喜欢扁平化的风格。
Hash一定会比遍历快吗
想当然的以为,hash肯定会比遍历快,因为是hash啊。其实,可以算算比较结果。比较什么时候
2m+n < m*n
从数据归纳法的角度,n必须大于2,不然即演变程
2m+2 < 2m
于是,当n>2时:
结果是:
m=2,n=33
也就是说n<=3的时候,遍历要比hash快。事实上还要更快,因为hash还需要创建更多的对象。然而,大部分情况下,n也就是第二个数组的长度是大于3的。这就是为什么说hash要更好写。当然,另一个很重要的原因是lambda stream的运算符号远比嵌套循环让人喜爱。
· 2017年【中公教育】特别推出2017年就业促进计划,500万就业基金助你成为IT达人
详情请戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz
· 什么?海量IT学习资料白给你都不要?别想了,加群抢:584539956
阅读全文
0 0
- 实例|如何从两个List中筛选出相同的值
- PHP实例:从数组里筛选出重复的数据
- 得到两个list中相同的部分。
- 如何从海量应聘简历中筛选出合适的人选
- 比较两个List元素是否相同,查找出两个list的不同元素
- java 从两个数组中选出相同和不同的值
- 从子类中筛选出不符合基类的项
- C#中如何判断两个哈希表相同Key的值
- java对List去重并排序、如何快速地去掉两个List中相同的部分
- python 中两个list是否有相同元素的办法
- python 中两个list是否有相同元素的办法?
- JAVA-获取两个list中相同的数据
- 如何获取两个字符串中两个相同的字符
- 如何把从数据库中查询出的结果保存为List<Map>
- 从两个数组中查找相同的数字谈Hashtable
- 筛选出list中出现次数最多的元素以及出现的次数
- python 从大数组中筛选出小数组中没有的元素
- 获取两个数组中相同的值
- 面向对象第三个特征----多态III(特点)
- 脚本
- java对象的缓存
- 在vue中使用jQuery的方法
- EasyUI弹出加载中遮罩
- 实例|如何从两个List中筛选出相同的值
- 一个查看天气气流风向的网站,很炫
- android身份证自动识别
- 如何申请小程序?
- iphone中input按钮设置disabled属性出现灰色背景没有显示问题
- PHP语全局变量-$_SERVER详解
- 搭建ECS云服务器(5)设置nginx+fastdfs+tomcat+redis开启自启动
- web.xml中出现<servlet-name>default</servlet-name>是什么意思?
- 乐其2017.10.13前端笔试题目