文档章节

使用HashSet获取两个List的并集

陈老师1
 陈老师1
发布于 2013/06/08 16:55
字数 479
阅读 117
收藏 0

近日在做项目的过程中,需要将两个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属性值是否相等进行判断的并集。

© 著作权归作者所有

陈老师1

陈老师1

粉丝 23
博文 2
码字总数 1286
作品 0
技术主管
私信 提问
加载中

评论(0)

Java核心技术卷1: 集合

集合接口 接口的设计思想之一: 将集合的接口与实现分离. 例如队列的接口如下: 而实现存在两种方式: 1. 使用循环数组实现: 2. 使用链表实现: 由于接口与实现分离, 我们可以根据不同的情况, 既...

fzyz_sb
2016/07/10
54
0
DotNet源码学习-HASHSET(初探)

命名空间:System.Collections.Generic 先看一下官方说明:类提供了高级的设置操作。集是不包含重复元素的集合,其元素无特定顺序。 HashSet 对象的容量是对象可以容纳的元素数。当向对象添加...

温暖如太阳
02/15
0
0
用HashSet查找两个int数组中的相同元素

其实用两个循环嵌套就可以实现,但这里只是为了演示HashSet的去重功能。 import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; impo...

JAVA_NINA
2011/01/07
1.7K
0
HashMap和HashSet的区别

HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整...

LCZ777
2014/03/29
62
0
map、set list 区别联系

List特点:元素有放入顺序,元素可重复 Map特点:元素按键值对存储,无放入顺序 Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的Has...

weiliu007
2016/08/30
16
0

没有更多内容

加载失败,请刷新页面

加载更多

易鑫车贷人工客服电话是多少

易鑫车贷人工客服电话是多少O29-63O37558人工客服电话O29-688O2826方法,大家可以采取一些传统的方式,比如说打开易鑫车贷,然后设置,就会看到帮助与反馈的字眼,然后大家打开这到各种各样的问题...

fgrf
今天
58
0
IntelliJ 如何找到项目中 Deprecated 的方法

在一个项目中,如果我们标记了某些元素为 Deprecated 的话,如何让我们能够快速找到? 简单来说,你可以对项目进行 Code Inspection。 选择 Analyze > Inspect Code 在弹出的对话框中,对整个...

honeymoose
今天
93
0
Java中的排序算法:冒泡排序

学习了一种新的排序算法:冒泡排序,冒泡排序是一种交换排序,指比较相邻的两个元素,如果前者比后者大,就交换位置,继续进行比较。 通过例子来实现: import java.util.Arrays; public cl...

北芷南姜
今天
73
0
OSChina 周五乱弹 —— 你不仅要背负工作,还要背负领导

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Cold Rain》- AniFace 手机党少年们想听歌,请使劲儿戳(这里) @明月依稀 :露...

小小编辑
今天
1K
4
个人环境之ubuntu的apt-get 总结

前言 apt-get是必须要学会的,如果搞定apt-get,可解决很多问题。接下来鸟才啊总结以往经验。 场景一 指定安装版本 先查看有软件有那些版本可以安装 apt-cache madison gcc-4.8 gcc-4.8 ...

鸟菜啊
今天
67
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部