实例|如何从两个List中筛选出相同的值

编程入门 行业动态 更新时间:2024-10-11 07:35:08

<a href=https://www.elefans.com/category/jswz/34/1771375.html style=实例|如何从两个List中筛选出相同的值"/>

实例|如何从两个List中筛选出相同的值

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/zt/jycj/?wt.bd=bgz

· 什么?海量IT学习资料白给你都不要?别想了,加群抢:584539956

更多推荐

实例|如何从两个List中筛选出相同的值

本文发布于:2024-03-06 01:22:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实例   两个   List

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!