java两个list取交集,如何实现两个list集合的求交集和差集
目录
操作的ListT声明求交集零售()求差集removeAll()求并集addAll()求去重后的并集
操作的ListT声明
旧列表
list string old list=new ArrayList();旧名单。添加( a );旧名单。添加( b );旧名单。add( c );系统。出去。println(旧列表# # 旧列表);新列表
ListString new list=new ArrayList();新列表。添加( a );新列表。add(" 1 ");新列表。add(" 2 ");系统。出去。println(新列表# # 新列表);
求交集 retainAll()
1.旧列表与新列表的交集
旧名单。保留全部(新列表);System.out.println(求交集# # 旧列表);响应
旧列表# #[甲,乙,丙]新列表## [a,1,2]求交集## [a]
2.新列表与旧列表的交集
新列表。保留全部(旧列表);System.out.println(求交集# # 新列表);响应
旧列表# #[甲,乙,丙]新列表## [a,1,2]求交集## [a]
求差集 removeAll()
1.旧列表与新列表的差集
旧名单。全部删除(新列表);系统。出去。println(旧列表。全部删除(新列表);- 求差集(在旧列表集合中,删掉旧列表与新列表中都有的元素):# # 旧列表);响应
旧列表## [a,b,c]新列表## [a,1,2]旧列表。全部删除(新列表);- 求差集(在旧列表集合中,删掉旧列表与新列表中都有的元素):## [b,c]
2.新列表与旧列表的差集
新列表。全部删除(旧列表);系统。出去。println(新列表。全部删除(旧列表);- 求差集(在新列表集合中,删掉旧列表与新列表中都有的元素):# # 新列表);响应
旧列表## [a,b,c]新列表## [a,1,2]新列表。全部删除(旧列表);- 求差集(在新列表集合中,删掉旧列表与新列表中都有的元素): ## [1, 2]
3.源码解析
removeAll()的源码
公共布尔removeAll(集合?c){对象。要求非空(c);返回batchRemove(c,false);} batchRemove的源码
(如果传的第二个参数是假的,保留差集;如果传的是没错,保留的是交集)
私有布尔蝙蝠移动(集合?c,布尔补码){ final Object[]element data=this。元素数据;int r=0,w=0;布尔修改=假;尝试{ for(;英语字母表中第十八个字母尺寸;r)if(c .包含(元素数据[r])==补码)元素数据[w]=元素数据[r];}最后{ //保留与抽象集合的行为兼容性,//即使c .包含()抛出. if (r!=size){ system。数组复制(elementData,r,element data,w,size-r);w=size-r;}如果(w!=size) { //清除让乔治勋章为(int I=w;英语字母表中第九个字母尺寸;I)元素数据[I]=空;modCount=size-w;size=w;修改=真;} }返回已修改;}
求并集 addAll()
1.旧列表与新列表的并集
旧名单。addall(新列表);System.out.println(求并集# # 旧列表);响应
旧列表# #[甲,乙,丙]新列表## [a,1,2]求并集##[a,b,c,a,1,2]
2.新列表与旧列表的并集
新列表。addall(旧列表);System.out.println(求并集# # 新列表);响应
旧列表# #[甲,乙,丙]新列表## [a,1,2]求并集##[a,1,2,a,b,c]
求去重后的并集
1.旧列表与新列表去重后的并集
旧名单。全部删除(新列表);//先求差集得到去除相同项后的oldlistodlist。addall(新列表);//再求并集System.out.println(求并集# # 旧列表);响应
旧列表# #[甲,乙,丙]新列表## [a,1,2]求并集## [b,c,a,1,2]
2.新列表与旧列表去重后的并集
新列表。全部删除(旧列表);新列表。addall(旧列表);System.out.println(求并集# # 新列表);响应
旧列表# #[甲,乙,丙]新列表## [a,1,2]求并集## [1,2,a,b,c]
关于两个Java链表的交、差、并、并的这篇文章到此为止& ltt & gt.关于Java链表的交、差、并、并的更多信息,请搜索热门IT以前的文章或者继续浏览下面的相关文章。我希望你将来能支持流行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。