怎么求两个List<ModelClass>的差集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么求两个List<ModelClass>的差集相关的知识,希望对你有一定的参考价值。
参考技术A 这是求并集的算法描述,链式结构实现的,参考一下算法描述
LNode *Merge_LinkList(LNode *La, LNode *Lb)
/* 合并以La, Lb为头结点的两个有序单链表 */
LNode*Lc, *pa , *pb, *pc, *ptr ;
Lc=La; pc=La ; pa=La->next ; pb=Lb->next ;
while (pa!=NULL && pb!=NULL)
if (pa->data<pb->data)
pc->next=pa ; pc=pa ; pa=pa->next ;
/* 将pa所指的结点合并,pa指向下一个结点 */
if (pa->data>pb->data)
pc->next=pb; pc=pb ; pb=pb->next ;
/* 将pa所指的结点合并,pa指向下一个结点 */
if (pa->data==pb->data)
pc->next=pa ; pc=pa ; pa=pa->next ;
ptr=pb; pb=pb->next; free(ptr);
/* 将pa所指的结点合并,pb所指结点删除 */
if (pa!=NULL) pc->next=pa ;
else pc->next=pb; /*将剩余的结点链上*/
free(Lb) ;
return(Lc) ;
求两个list的交集和并集
两个list的并集,只需去除重复元素即可;
将两个list放入同一个set中即可;
两个list的交集:
1将其中一个list放入set,
2循环另一个list,每次向set塞值,
3判断set的总数是否变化,如果不变,该值就是交集的一员;
static void getIntersection() { List<Long> r1 = new ArrayList<>(); r1.add(1L); r1.add(2L); r1.add(3L); r1.add(4L); r1.add(5L); System.out.println("M" + r1); List<Long> r2 = new ArrayList<>(); r2.add(11L); r2.add(12L); r2.add(13L); r2.add(4L); r2.add(5L); Set<Long> hashSet = new HashSet<>(r1); System.out.println("N" + r2); List<Long> r3 = new ArrayList<>(); int count = hashSet.size(); for (int i = 0; i < r2.size(); i++) { hashSet.add(r2.get(i)); if (hashSet.size() == count) { r3.add(r2.get(i)); } else { count++; } } System.out.println("交集" + r3); }
以上是关于怎么求两个List<ModelClass>的差集的主要内容,如果未能解决你的问题,请参考以下文章