Java里面如何求两个集合的交集

Python014

Java里面如何求两个集合的交集,第1张

用Collection提供的retainAll方法,如下是测试代码:

import java.util.*

public class TestList1{

public static void main(String[] args){

List list1=new ArrayList()

list1.add("A")list1.add("B")list1.add("C")

List list2=new ArrayList()

list2.add("B")list2.add("C")list2.add("D")

list1.retainAll(list2)

System.out.println(“交集为:”+list1)

}

}

//测试:

//交集为:[B, C]

public static void  main(String[] args) {

     Integer[] A = {1,2,3,4}

     Integer[] B = {1,3,7,9,11}

    

     List<Integer> listA = Arrays.asList(A)

     List<Integer> listB = Arrays.asList(B)

    

     List<Integer> jiaoji = new ArrayList<Integer>()

     for(Integer a:listA){

     if(listB.contains(a)){

     jiaoji.add(a)

     }

     }

     System.out.println(jiaoji)

     List<Integer> bingji = new ArrayList<Integer>()

     for(Integer a:listA){

     if(!bingji.contains(a)){

     bingji.add(a)

     }

     }

     for(Integer b:listB){

     if(!bingji.contains(b)){

     bingji.add(b)

     }

     }

    

     System.out.println(bingji)

    

     List<Integer> chaji = new ArrayList<Integer>()

     for(Integer a:listA){

     if(!listB.contains(a)){

     chaji.add(a)

     }

     }

     System.out.println(chaji)

    }

1、把多个list放到一个list中,生成 List<List<Object>>结构

2、遍历list,使用java8的规约操作,两两求交集

list.stream().reduce((list1,list2) ->{ list1.retainAll(list2)return list1}).orElse(emptyList())