您的位置:

Java交集演示

一、简介

在Java中,交集指两集合中完全相同的元素。在实际的开发过程中,我们需要经常对多个集合求交集,以便进行下一步的操作。本文将介绍Java中求交集的方法。

二、使用Collection接口中的retainAll方法

在Java中,Collection接口是集合框架中的一个接口,它是List、Set和Queue接口的父接口。这个接口提供了一个retainAll方法,可以用于求两个集合之间的交集。具体方法如下:

Collection c1 = Arrays.asList(1, 2, 3, 4, 5);
Collection
    c2 = Arrays.asList(4, 5, 6, 7, 8);
c1.retainAll(c2);    //求交集
System.out.println(c1);    //输出[4, 5]

   
  

上面的代码中,我们通过Arrays.asList方法定义两个整型集合c1和c2,然后通过调用c1的retainAll方法,传入c2作为参数,就可以得到两个集合的交集。

三、使用Java 8中的stream API

Java 8引入了stream API,可以使得代码更加的简洁,同时也比较容易理解。下面是一个使用stream API求两个集合交集的例子:

List list1 = Arrays.asList(1, 2, 3, 4, 5);
List
    list2 = Arrays.asList(4, 5, 6, 7, 8);
List
     result = list1.stream()
                     .distinct()
                     .filter(list2::contains)
                     .collect(Collectors.toList());
System.out.println(result);    //输出[4, 5]

    
   
  

以上代码中,我们通过调用stream方法可以把集合转换成流,然后使用distinct方法去重,filter方法取交集,最后使用collect方法将流转换成List类型,并返回结果。

四、使用Apache Commons Collection库中的方法

Apache Commons是一个开源工具库,其中的Commons Collection库包含了很多实用的集合操作方法,如ArrayUtils、BagUtils、CollectionUtils、ListUtils、MapUtils等等。这里我们使用其中的CollectionUtils类中的intersection方法,具体方法如下:

List list1 = Arrays.asList(1, 2, 3, 4, 5);
List
    list2 = Arrays.asList(4, 5, 6, 7, 8);
List
     result = (List
     ) CollectionUtils.intersection(list1, list2);
System.out.println(result);    //输出[4, 5]

     
    
   
  

以上代码中,我们通过调用CollectionUtils类中的intersection方法,传入两个List类型的集合作为参数,就可以得到它们的交集了。

五、总结

本文介绍了Java中求两集合之间交集的三种方法,分别是使用Collection接口中的retainAll方法、使用Java 8中的stream API、使用Apache Commons Collection库中的方法。在实际的开发中,我们可以根据具体情况选择使用不同的方法,以便更好的完成代码编写。