怎么求两个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>的差集的主要内容,如果未能解决你的问题,请参考以下文章

求2个list的差集

两个已排序List求交集

JAVA怎么取多个List集合的交集?

IReport 4.5.0如何遍历嵌套的list,求大神指教?

两个list求差集

Java 求数组list共有的元素