注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

老陈的博客

非淡泊无以明志,非宁静无以致远,说的是心态!

 
 
 

日志

 
 

使用HashSet获取两个List的并集  

2009-12-29 22:41:12|  分类: 工作 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

近日在做项目的过程中,需要将两个List(ArrayList)中的值,按照某个属性值是否相等进行获取并集的操作。而两个List中存放的数据 类型完全不相同(一个自定义的类,一个Stirng数组),并且两个List中的元素数量都较多,两层嵌套循环判断是一个效率比较低的办法,即使在搜索值 是否相等时,使用折半算法,也会有较大的效率损失。

考虑到Java中的Set是一种不包含重复元素的collection。因此考虑使用 Set解决此问题。而所有的Set实现类中HashSet的效率较高(HashSet基本使用HashMap的实现,在比较Set中元素是否相同时,首先 比较两者的key值是否相同;如果key值相同,则调用Set中已有元素对象的“equals”方法,比较原Set中的元素与新加入的元素是否相同),因 此采用HashSet做为首选方案。由于两个List中的元素类型不相同,因此,需要将其中一个的类型进行转换。考虑到需要重写Object的 “equals”与“hashCode”方法,将包含String数组的List进行转换。而比较值是否相等时,需要判断两个对象的id属性是否相等,因 此将List中所存放元素的“hashCode”方法,重写(Override)为返回当前对象的id属性值;重写“equals”方法为判断当前对象与 目标对象的id属性值是否相等。然后将存放String数组的List中所有的元素转换为另一个List中的类型。分别遍历两个List,并将其中的元素 加入HashSet中,得到两个List根据其中元素的id属性值是否相等进行判断的并集。

  评论这张
 
阅读(53)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017